Go to the documentation of this file.
19 #ifndef GRPCPP_IMPL_CODEGEN_METHOD_HANDLER_H
20 #define GRPCPP_IMPL_CODEGEN_METHOD_HANDLER_H
40 template <
class Callable>
42 #if GRPC_ALLOW_EXCEPTIONS
47 "Unexpected error in RPC handling");
49 #else // GRPC_ALLOW_EXCEPTIONS
51 #endif // GRPC_ALLOW_EXCEPTIONS
58 template <
class ResponseType>
81 template <
class RequestType>
128 static_cast<BaseRequestType*
>(
request));
141 template <
class ServiceType,
class RequestType,
class ResponseType>
166 if (!param.server_context->sent_initial_metadata_) {
167 ops.SendInitialMetadata(¶m.server_context->initial_metadata_,
168 param.server_context->initial_metadata_flags());
169 if (param.server_context->compression_level_set()) {
170 ops.set_compression_level(param.server_context->compression_level());
176 ops.ServerSendStatus(¶m.server_context->trailing_metadata_,
status);
177 param.call->PerformOps(&
ops);
178 param.call->cq()->Pluck(&
ops);
189 template <
class ServiceType,
class RequestType,
class ResponseType>
215 if (!param.server_context->sent_initial_metadata_) {
216 ops.SendInitialMetadata(¶m.server_context->initial_metadata_,
217 param.server_context->initial_metadata_flags());
218 if (param.server_context->compression_level_set()) {
219 ops.set_compression_level(param.server_context->compression_level());
222 ops.ServerSendStatus(¶m.server_context->trailing_metadata_,
status);
223 param.call->PerformOps(&
ops);
224 if (param.server_context->has_pending_ops_) {
225 param.call->cq()->Pluck(¶m.server_context->pending_ops_);
227 param.call->cq()->Pluck(&
ops);
260 template <
class Streamer,
bool WriteNeeded>
268 Streamer
stream(param.call,
278 if (!param.server_context->sent_initial_metadata_) {
279 ops.SendInitialMetadata(¶m.server_context->initial_metadata_,
280 param.server_context->initial_metadata_flags());
281 if (param.server_context->compression_level_set()) {
282 ops.set_compression_level(param.server_context->compression_level());
288 "Service did not provide response message");
291 ops.ServerSendStatus(¶m.server_context->trailing_metadata_,
status);
292 param.call->PerformOps(&
ops);
293 if (param.server_context->has_pending_ops_) {
294 param.call->cq()->Pluck(¶m.server_context->pending_ops_);
296 param.call->cq()->Pluck(&
ops);
304 template <
class ServiceType,
class RequestType,
class ResponseType>
307 ServerReaderWriter<ResponseType, RequestType>, false> {
324 template <
class RequestType,
class ResponseType>
327 ServerUnaryStreamer<RequestType, ResponseType>, true> {
339 template <
class RequestType,
class ResponseType>
342 ServerSplitStreamer<RequestType, ResponseType>, false> {
356 template <grpc::StatusCode code>
365 if (!
context->sent_initial_metadata_) {
366 ops->SendInitialMetadata(&
context->initial_metadata_,
368 if (
context->compression_level_set()) {
369 ops->set_compression_level(
context->compression_level());
371 context->sent_initial_metadata_ =
true;
381 param.call->PerformOps(&
ops);
382 param.call->cq()->Pluck(&
ops);
388 if (
req !=
nullptr) {
406 #endif // GRPCPP_IMPL_CODEGEN_METHOD_HANDLER_H
ClientStreamingHandler(std::function< grpc::Status(ServiceType *, grpc::ServerContext *, ServerReader< RequestType > *, ResponseType *)> func, ServiceType *service)
void * Deserialize(grpc_call *call, grpc_byte_buffer *req, grpc::Status *status, void **) final
grpc_compression_level compression_level() const
Return the compression algorithm to be used by the server call.
std::function< grpc::Status(ServiceType *, grpc::ServerContext *, const RequestType *, ServerWriter< ResponseType > *)> func_
std::multimap< std::string, std::string > trailing_metadata_
std::function< grpc::Status(ServiceType *, grpc::ServerContext *, ServerReader< RequestType > *, ResponseType *)> func_
virtual void * grpc_call_arena_alloc(grpc_call *call, size_t length)=0
#define T(upbtypeconst, upbtype, ctype, default_value)
bool Pluck(grpc::internal::CompletionQueueTag *tag)
bool compression_level_set() const
void RunHandler(const HandlerParameter ¶m) final
StreamedUnaryHandler(std::function< grpc::Status(grpc::ServerContext *, ServerUnaryStreamer< RequestType, ResponseType > *)> func)
CoreCodegenInterface * g_core_codegen_interface
ErrorMethodHandler< grpc::StatusCode::RESOURCE_EXHAUSTED > ResourceExhaustedHandler
constexpr absl::remove_reference_t< T > && move(T &&t) noexcept
grpc::ServerContextBase *const server_context
Base class of ServerContext.
uint32_t initial_metadata_flags() const
void * Deserialize(grpc_call *, grpc_byte_buffer *req, grpc::Status *, void **) final
void * UnaryDeserializeHelper(grpc_byte_buffer *, grpc::Status *, RequestType *)
A helper function with reduced templating to do deserializing.
struct grpc_call grpc_call
RpcMethodHandler(std::function< grpc::Status(ServiceType *, grpc::ServerContext *, const RequestType *, ResponseType *)> func, ServiceType *service)
std::multimap< std::string, std::string > initial_metadata_
void PerformOps(CallOpSetInterface *ops)
SplitServerStreamingHandler(std::function< grpc::Status(grpc::ServerContext *, ServerSplitStreamer< RequestType, ResponseType > *)> func)
grpc::internal::MetadataMap trailing_metadata_
uint32_t initial_metadata_flags() const
std::function< grpc::Status(grpc::ServerContext *, Streamer *)> func_
virtual void grpc_byte_buffer_destroy(grpc_byte_buffer *bb)=0
bool sent_initial_metadata_
Base class for running an RPC handler.
static void FillOps(grpc::ServerContextBase *context, const std::string &message, T *ops)
ErrorMethodHandler(const std::string &message)
grpc::CompletionQueue * cq() const
void * Deserialize(grpc_call *call, grpc_byte_buffer *req, grpc::Status *status, void **) final
GRPC_CUSTOM_UTIL_STATUS Status
const std::string message_
std::function< grpc::Status(ServiceType *, grpc::ServerContext *, const RequestType *, ResponseType *)> func_
Application provided rpc handler function.
::grpc::Status CatchingFunctionHandler(Callable &&handler)
#define GPR_CODEGEN_ASSERT(x)
Codegen specific version of GPR_ASSERT.
void RunHandler(const HandlerParameter ¶m) final
ServerStreamingHandler(std::function< grpc::Status(ServiceType *, grpc::ServerContext *, const RequestType *, ServerWriter< ResponseType > *)> func, ServiceType *service)
grpc::ClientContext context
ErrorMethodHandler< grpc::StatusCode::UNIMPLEMENTED > UnknownMethodHandler
__attribute__((deprecated("Please use GRPCProtoMethod."))) @interface ProtoMethod NSString * service
TemplatedBidiStreamingHandler(std::function< grpc::Status(grpc::ServerContext *, Streamer *)> func)
void RunHandler(const HandlerParameter ¶m) final
A wrapper class of an application provided server streaming handler.
A wrapper class of an application provided client streaming handler.
void RunHandler(const HandlerParameter ¶m) final
void UnaryRunHandlerHelper(const grpc::internal::MethodHandler::HandlerParameter &, ResponseType *, grpc::Status &)
void RunHandler(const HandlerParameter ¶m) final
BidiStreamingHandler(std::function< grpc::Status(ServiceType *, grpc::ServerContext *, ServerReaderWriter< ResponseType, RequestType > *)> func, ServiceType *service)
grpc
Author(s):
autogenerated on Thu Mar 13 2025 03:00:39