34 #ifndef GRPCXX_IMPL_CODEGEN_METHOD_HANDLER_IMPL_H 35 #define GRPCXX_IMPL_CODEGEN_METHOD_HANDLER_IMPL_H 44 template <
class ServiceType,
class RequestType,
class ResponseType>
45 class RpcMethodHandler :
public MethodHandler {
48 const RequestType*, ResponseType*)>
51 : func_(func), service_(service) {}
56 param.request, &req, param.max_message_size);
59 status = func_(service_, param.server_context, &req, &rsp);
66 ops.SendInitialMetadata(param.server_context->initial_metadata_,
67 param.server_context->initial_metadata_flags());
68 if (param.server_context->compression_level_set()) {
69 ops.set_compression_level(param.server_context->compression_level());
72 status = ops.SendMessage(rsp);
74 ops.ServerSendStatus(param.server_context->trailing_metadata_, status);
75 param.call->PerformOps(&ops);
76 param.call->cq()->Pluck(&ops);
85 ServiceType* service_;
89 template <
class ServiceType,
class RequestType,
class ResponseType>
97 : func_(func), service_(service) {}
102 Status status = func_(service_, param.server_context, &reader, &rsp);
108 ops.SendInitialMetadata(param.server_context->initial_metadata_,
109 param.server_context->initial_metadata_flags());
110 if (param.server_context->compression_level_set()) {
111 ops.set_compression_level(param.server_context->compression_level());
114 status = ops.SendMessage(rsp);
116 ops.ServerSendStatus(param.server_context->trailing_metadata_, status);
117 param.call->PerformOps(&ops);
118 param.call->cq()->Pluck(&ops);
122 std::function<Status(ServiceType*, ServerContext*, ServerReader<RequestType>*,
125 ServiceType* service_;
129 template <
class ServiceType,
class RequestType,
class ResponseType>
136 ServiceType* service)
137 : func_(func), service_(service) {}
142 param.request, &req, param.max_message_size);
146 status = func_(service_, param.server_context, &req, &writer);
150 if (!param.server_context->sent_initial_metadata_) {
151 ops.SendInitialMetadata(param.server_context->initial_metadata_,
152 param.server_context->initial_metadata_flags());
153 if (param.server_context->compression_level_set()) {
154 ops.set_compression_level(param.server_context->compression_level());
157 ops.ServerSendStatus(param.server_context->trailing_metadata_, status);
158 param.call->PerformOps(&ops);
159 param.call->cq()->Pluck(&ops);
166 ServiceType* service_;
170 template <
class ServiceType,
class RequestType,
class ResponseType>
177 ServiceType* service)
178 : func_(func), service_(service) {}
182 param.server_context);
183 Status status = func_(service_, param.server_context, &stream);
186 if (!param.server_context->sent_initial_metadata_) {
187 ops.SendInitialMetadata(param.server_context->initial_metadata_,
188 param.server_context->initial_metadata_flags());
189 if (param.server_context->compression_level_set()) {
190 ops.set_compression_level(param.server_context->compression_level());
193 ops.ServerSendStatus(param.server_context->trailing_metadata_, status);
194 param.call->PerformOps(&ops);
195 param.call->cq()->Pluck(&ops);
202 ServiceType* service_;
211 if (!context->sent_initial_metadata_) {
212 ops->SendInitialMetadata(context->initial_metadata_,
213 context->initial_metadata_flags());
217 context->sent_initial_metadata_ =
true;
219 ops->ServerSendStatus(context->trailing_metadata_, status);
224 FillOps(param.server_context, &ops);
225 param.call->PerformOps(&ops);
226 param.call->cq()->Pluck(&ops);
232 #endif // GRPCXX_IMPL_CODEGEN_METHOD_HANDLER_IMPL_H grpc_compression_level compression_level() const
Definition: server_context.h:130
Definition: rpc_service_method.h:53
#define GPR_CODEGEN_ASSERT(x)
Codegen specific version of GPR_ASSERT.
Definition: core_codegen_interface.h:97
ClientStreamingHandler(std::function< Status(ServiceType *, ServerContext *, ServerReader< RequestType > *, ResponseType *)> func, ServiceType *service)
Definition: method_handler_impl.h:92
void RunHandler(const HandlerParameter ¶m)
Definition: method_handler_impl.h:222
ServerStreamingHandler(std::function< Status(ServiceType *, ServerContext *, const RequestType *, ServerWriter< ResponseType > *)> func, ServiceType *service)
Definition: method_handler_impl.h:132
static void FillOps(ServerContext *context, T *ops)
Definition: method_handler_impl.h:209
void RunHandler(const HandlerParameter ¶m)
Definition: method_handler_impl.h:139
void RunHandler(const HandlerParameter ¶m)
Definition: method_handler_impl.h:99
Definition: completion_queue.h:68
Defines how to serialize and deserialize some type.
Definition: serialization_traits.h:64
Definition: method_handler_impl.h:206
void RunHandler(const HandlerParameter ¶m)
Definition: method_handler_impl.h:180
RpcMethodHandler(std::function< Status(ServiceType *, ServerContext *, const RequestType *, ResponseType *)> func, ServiceType *service)
Definition: method_handler_impl.h:47
Primary implementaiton of CallOpSetInterface.
Definition: call.h:593
Definition: server_context.h:91
void RunHandler(const HandlerParameter ¶m)
Definition: method_handler_impl.h:53
Definition: completion_queue.h:70
#define GRPC_FINAL
Definition: config.h:72
Definition: completion_queue.h:76
BidiStreamingHandler(std::function< Status(ServiceType *, ServerContext *, ServerReaderWriter< ResponseType, RequestType > *)> func, ServiceType *service)
Definition: method_handler_impl.h:173
Server-side interface for bi-directional streaming.
Definition: completion_queue.h:72
bool ok() const
Is the status OK?
Definition: status.h:67
Definition: rpc_service_method.h:56
Definition: completion_queue.h:78
Did it work? If it didn't, why?
Definition: status.h:45
Operation is not implemented or not supported/enabled in this service.
Definition: status_code_enum.h:130
bool compression_level_set() const
Definition: server_context.h:139
Definition: completion_queue.h:80