diff options
author | 2015-08-13 11:15:53 -0700 | |
---|---|---|
committer | 2015-08-13 11:15:53 -0700 | |
commit | 9b7757dd356dae2549433d5b2686ce9a902c7bcc (patch) | |
tree | 73156a3771c071957f0c0cf8fd245ef84ec45061 /include/grpc++/impl | |
parent | abfa427d654529dec5ad0dad790f5bf7f991ac85 (diff) |
Use a sync service to handle requests to unknown services
Diffstat (limited to 'include/grpc++/impl')
-rw-r--r-- | include/grpc++/impl/rpc_service_method.h | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/include/grpc++/impl/rpc_service_method.h b/include/grpc++/impl/rpc_service_method.h index 3cfbef7806..925801e1ce 100644 --- a/include/grpc++/impl/rpc_service_method.h +++ b/include/grpc++/impl/rpc_service_method.h @@ -208,6 +208,21 @@ class BidiStreamingHandler : public MethodHandler { ServiceType* service_; }; +// Handle unknown method by returning UNIMPLEMENTED error. +class UnknownMethodHandler : public MethodHandler { + public: + void RunHandler(const HandlerParameter& param) GRPC_FINAL { + Status status(StatusCode::UNIMPLEMENTED, ""); + CallOpSet<CallOpSendInitialMetadata, CallOpServerSendStatus> ops; + if (!param.server_context->sent_initial_metadata_) { + ops.SendInitialMetadata(param.server_context->initial_metadata_); + } + ops.ServerSendStatus(param.server_context->trailing_metadata_, status); + param.call->PerformOps(&ops); + param.call->cq()->Pluck(&ops); + } +}; + // Server side rpc method class class RpcServiceMethod : public RpcMethod { public: |