diff options
author | Moiz Haidry <42048362+mhaidrygoog@users.noreply.github.com> | 2018-12-14 16:50:45 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-12-14 16:50:45 -0800 |
commit | b250f34b1225cde1bb19496c5cc5d66e40111052 (patch) | |
tree | bb28c0ec6c251385ace05f3ebfeed797239fda01 /test | |
parent | a8688d3bd37353e341330f8fdf1f24dd0a999cee (diff) | |
parent | 3bc323977fb049ac0a10306ec9c964387b204d7c (diff) |
Merge pull request #17465 from mhaidrygoog/server_streaming_callback_benchmark
Benchmark Streaming support for callback server
Diffstat (limited to 'test')
-rw-r--r-- | test/cpp/qps/server_callback.cc | 46 |
1 files changed, 43 insertions, 3 deletions
diff --git a/test/cpp/qps/server_callback.cc b/test/cpp/qps/server_callback.cc index 8bedd44739..4a346dd017 100644 --- a/test/cpp/qps/server_callback.cc +++ b/test/cpp/qps/server_callback.cc @@ -34,13 +34,53 @@ class BenchmarkCallbackServiceImpl final : public BenchmarkService::ExperimentalCallbackService { public: void UnaryCall( - ServerContext* context, const SimpleRequest* request, - SimpleResponse* response, - experimental::ServerCallbackRpcController* controller) override { + ServerContext* context, const ::grpc::testing::SimpleRequest* request, + ::grpc::testing::SimpleResponse* response, + ::grpc::experimental::ServerCallbackRpcController* controller) override { auto s = SetResponse(request, response); controller->Finish(s); } + ::grpc::experimental::ServerBidiReactor<::grpc::testing::SimpleRequest, + ::grpc::testing::SimpleResponse>* + StreamingCall() override { + class Reactor + : public ::grpc::experimental::ServerBidiReactor< + ::grpc::testing::SimpleRequest, ::grpc::testing::SimpleResponse> { + public: + Reactor() {} + void OnStarted(ServerContext* context) override { StartRead(&request_); } + + void OnReadDone(bool ok) override { + if (!ok) { + Finish(::grpc::Status::OK); + return; + } + auto s = SetResponse(&request_, &response_); + if (!s.ok()) { + Finish(s); + return; + } + StartWrite(&response_); + } + + void OnWriteDone(bool ok) override { + if (!ok) { + Finish(::grpc::Status::OK); + return; + } + StartRead(&request_); + } + + void OnDone() override { delete (this); } + + private: + SimpleRequest request_; + SimpleResponse response_; + }; + return new Reactor; + } + private: static Status SetResponse(const SimpleRequest* request, SimpleResponse* response) { |