|
|
@ -34,13 +34,53 @@ class BenchmarkCallbackServiceImpl final |
|
|
|
: public BenchmarkService::ExperimentalCallbackService { |
|
|
|
: public BenchmarkService::ExperimentalCallbackService { |
|
|
|
public: |
|
|
|
public: |
|
|
|
void UnaryCall( |
|
|
|
void UnaryCall( |
|
|
|
ServerContext* context, const SimpleRequest* request, |
|
|
|
ServerContext* context, const ::grpc::testing::SimpleRequest* request, |
|
|
|
SimpleResponse* response, |
|
|
|
::grpc::testing::SimpleResponse* response, |
|
|
|
experimental::ServerCallbackRpcController* controller) override { |
|
|
|
::grpc::experimental::ServerCallbackRpcController* controller) override { |
|
|
|
auto s = SetResponse(request, response); |
|
|
|
auto s = SetResponse(request, response); |
|
|
|
controller->Finish(s); |
|
|
|
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: |
|
|
|
private: |
|
|
|
static Status SetResponse(const SimpleRequest* request, |
|
|
|
static Status SetResponse(const SimpleRequest* request, |
|
|
|
SimpleResponse* response) { |
|
|
|
SimpleResponse* response) { |
|
|
|