|
|
|
@ -71,7 +71,7 @@ class AsyncQpsServerTest : public Server { |
|
|
|
|
ServerAsyncReaderWriter<ResponseType, RequestType> *, |
|
|
|
|
CompletionQueue *, ServerCompletionQueue *, void *)> |
|
|
|
|
request_streaming_function, |
|
|
|
|
std::function<grpc::Status(const ServerConfig &, const RequestType *, |
|
|
|
|
std::function<grpc::Status(const PayloadConfig &, const RequestType *, |
|
|
|
|
ResponseType *)> |
|
|
|
|
process_rpc) |
|
|
|
|
: Server(config) { |
|
|
|
@ -94,7 +94,8 @@ class AsyncQpsServerTest : public Server { |
|
|
|
|
|
|
|
|
|
using namespace std::placeholders; |
|
|
|
|
|
|
|
|
|
auto process_rpc_bound = std::bind(process_rpc, config, _1, _2); |
|
|
|
|
auto process_rpc_bound = std::bind(process_rpc, config.payload_config(), |
|
|
|
|
_1, _2); |
|
|
|
|
|
|
|
|
|
for (int i = 0; i < 10000 / config.async_server_threads(); i++) { |
|
|
|
|
for (int j = 0; j < config.async_server_threads(); j++) { |
|
|
|
@ -358,9 +359,10 @@ static void RegisterGenericService(ServerBuilder *builder, |
|
|
|
|
builder->RegisterAsyncGenericService(service); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
template <class RequestType, class ResponseType> |
|
|
|
|
Status ProcessRPC(const ServerConfig &config, const RequestType *request, |
|
|
|
|
ResponseType *response) { |
|
|
|
|
|
|
|
|
|
static Status ProcessSimpleRPC(const PayloadConfig&, |
|
|
|
|
const SimpleRequest *request, |
|
|
|
|
SimpleResponse *response) { |
|
|
|
|
if (request->response_size() > 0) { |
|
|
|
|
if (!Server::SetPayload(request->response_type(), request->response_size(), |
|
|
|
|
response->mutable_payload())) { |
|
|
|
@ -370,9 +372,14 @@ Status ProcessRPC(const ServerConfig &config, const RequestType *request, |
|
|
|
|
return Status::OK; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
template <> |
|
|
|
|
Status ProcessRPC(const ServerConfig &config, const ByteBuffer *request, |
|
|
|
|
ByteBuffer *response) { |
|
|
|
|
static Status ProcessGenericRPC(const PayloadConfig& payload_config, |
|
|
|
|
const ByteBuffer *request, |
|
|
|
|
ByteBuffer *response) { |
|
|
|
|
int resp_size = payload_config.bytebuf_params().resp_size(); |
|
|
|
|
std::unique_ptr<char> buf(new char[resp_size]); |
|
|
|
|
gpr_slice s = gpr_slice_from_copied_buffer(buf.get(), resp_size); |
|
|
|
|
Slice slice(s, Slice::STEAL_REF); |
|
|
|
|
*response = ByteBuffer(&slice, 1); |
|
|
|
|
return Status::OK; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -384,7 +391,7 @@ std::unique_ptr<Server> CreateAsyncServer(const ServerConfig &config) { |
|
|
|
|
config, RegisterBenchmarkService, |
|
|
|
|
&BenchmarkService::AsyncService::RequestUnaryCall, |
|
|
|
|
&BenchmarkService::AsyncService::RequestStreamingCall, |
|
|
|
|
ProcessRPC<SimpleRequest, SimpleResponse>)); |
|
|
|
|
ProcessSimpleRPC)); |
|
|
|
|
} |
|
|
|
|
std::unique_ptr<Server> CreateAsyncGenericServer(const ServerConfig &config) { |
|
|
|
|
return std::unique_ptr<Server>( |
|
|
|
@ -392,7 +399,7 @@ std::unique_ptr<Server> CreateAsyncGenericServer(const ServerConfig &config) { |
|
|
|
|
grpc::GenericServerContext>( |
|
|
|
|
config, RegisterGenericService, nullptr, |
|
|
|
|
&grpc::AsyncGenericService::RequestCall, |
|
|
|
|
ProcessRPC<ByteBuffer, ByteBuffer>)); |
|
|
|
|
ProcessGenericRPC)); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
} // namespace testing
|
|
|
|
|