19 #ifndef GRPCPP_IMPL_CODEGEN_SERVER_INTERFACE_H 20 #define GRPCPP_IMPL_CODEGEN_SERVER_INTERFACE_H 33 class AsyncGenericService;
35 class GenericServerContext;
36 class ServerCompletionQueue;
38 class ServerCredentials;
47 class ServerAsyncStreamingInterface;
50 namespace experimental {
51 class CallbackGenericService;
109 virtual void Wait() = 0;
112 friend class ::grpc::Service;
163 virtual void ShutdownInternal(
gpr_timespec deadline) = 0;
165 virtual int max_receive_message_size()
const = 0;
178 bool delete_on_finalize);
181 bool FinalizeResult(
void** tag,
bool* status)
override;
184 void ContinueFinalizeResultAfterInterception();
211 if (done_intercepting_) {
212 return BaseAsyncRequest::FinalizeResult(tag, status);
215 call_, server_, call_cq_, server_->max_receive_message_size(),
216 context_->set_server_rpc_info(name_, type_,
217 *server_->interceptor_creators()));
218 return BaseAsyncRequest::FinalizeResult(tag, status);
236 server, context, stream, call_cq, notification_cq, tag,
237 registered_method->name(), registered_method->method_type()) {
238 IssueRequest(registered_method->
server_tag(),
nullptr, notification_cq);
244 template <
class Message>
254 server, context, stream, call_cq, notification_cq, tag,
255 registered_method->name(), registered_method->method_type()),
256 registered_method_(registered_method),
261 notification_cq_(notification_cq),
264 IssueRequest(registered_method->
server_tag(), payload_.bbuf_ptr(),
274 if (done_intercepting_) {
275 return RegisteredAsyncRequest::FinalizeResult(tag, status);
279 payload_.bbuf_ptr(), request_)
285 g_core_codegen_interface->grpc_call_cancel_with_status(
287 g_core_codegen_interface->grpc_call_unref(call_);
289 stream_, call_cq_, notification_cq_, tag_,
296 interceptor_methods_.AddInterceptionHookPoint(
298 interceptor_methods_.SetRecvMessage(request_,
nullptr);
299 return RegisteredAsyncRequest::FinalizeResult(tag, status);
321 bool delete_on_finalize);
323 bool FinalizeResult(
void** tag,
bool* status)
override;
329 template <
class Message>
338 notification_cq, tag, message);
348 notification_cq, tag);
367 std::unique_ptr<experimental::ServerInterceptorFactoryInterface>>*
368 interceptor_creators() {
385 #endif // GRPCPP_IMPL_CODEGEN_SERVER_INTERFACE_H struct grpc_call grpc_call
A Call represents an RPC.
Definition: grpc_types.h:70
virtual ~ServerInterface()
Definition: server_interface.h:56
Definition: server_interface.h:228
void RequestAsyncGenericCall(GenericServerContext *context, internal::ServerAsyncStreamingInterface *stream, CompletionQueue *call_cq, ServerCompletionQueue *notification_cq, void *tag)
Definition: server_interface.h:351
#define GPR_CODEGEN_ASSERT(x)
Codegen specific version of GPR_ASSERT.
Definition: core_codegen_interface.h:144
void Shutdown()
Shutdown the server without a deadline and forced cancellation.
Definition: server_interface.h:100
std::string string
Definition: config.h:35
const internal::RpcMethod::RpcType type_
Definition: server_interface.h:225
An interface allowing implementors to process and filter event tags.
Definition: completion_queue_tag.h:26
NOTE: class experimental_registration_interface is not part of the public API of this class TODO(vjpa...
Definition: server_interface.h:125
void * server_tag() const
Definition: rpc_service_method.h:100
Definition: server_interface.h:245
ServerInterface *const server_
Definition: server_interface.h:187
ServerCompletionQueue *const notification_cq_
Definition: server_interface.h:191
Desriptor of an RPC service and its various RPC methods.
Definition: service_type.h:58
RegisteredAsyncRequest is not part of the C++ API.
Definition: server_interface.h:201
internal::InterceptorBatchMethodsImpl interceptor_methods_
Definition: server_interface.h:196
bool done_intercepting_
Definition: server_interface.h:197
void RequestAsyncCall(internal::RpcServiceMethod *method, ServerContext *context, internal::ServerAsyncStreamingInterface *stream, CompletionQueue *call_cq, ServerCompletionQueue *notification_cq, void *tag, Message *message)
Definition: server_interface.h:330
Monotonic clock.
Definition: gpr_types.h:33
struct grpc_server grpc_server
A server listens to some port and responds to request calls.
Definition: grpc_types.h:65
Definition: service_type.h:39
Definition: grpc_types.h:507
Definition: grpc_types.h:40
Definition: async_generic_service.h:72
RpcType
Definition: rpc_method.h:31
If you are trying to use CompletionQueue::AsyncNext with a time class that isn't either gpr_timespec ...
Definition: time.h:40
virtual ~experimental_registration_interface()
Definition: server_interface.h:127
virtual void RegisterCallbackGenericService(experimental::CallbackGenericService *service)
May not be abstract since this is a post-1.0 API addition.
Definition: server_interface.h:129
Defines how to serialize and deserialize some type.
Definition: serialization_traits.h:58
internal::Call call_wrapper_
Definition: server_interface.h:195
PayloadAsyncRequest(internal::RpcServiceMethod *registered_method, ServerInterface *server, ServerContext *context, internal::ServerAsyncStreamingInterface *stream, CompletionQueue *call_cq, ServerCompletionQueue *notification_cq, void *tag, Message *request)
Definition: server_interface.h:247
Wrapper around grpc_server_credentials, a way to authenticate a server.
Definition: server_credentials.h:35
internal::ServerAsyncStreamingInterface *const stream_
Definition: server_interface.h:189
This header provides an object that reads bytes directly from a grpc::ByteBuffer, via the ZeroCopyInp...
Definition: alarm.h:24
const bool delete_on_finalize_
Definition: server_interface.h:193
Server side rpc method class.
Definition: rpc_service_method.h:81
CoreCodegenInterface * g_core_codegen_interface
Definition: call_op_set.h:51
void RequestAsyncCall(internal::RpcServiceMethod *method, ServerContext *context, internal::ServerAsyncStreamingInterface *stream, CompletionQueue *call_cq, ServerCompletionQueue *notification_cq, void *tag)
Definition: server_interface.h:341
Definition: interceptor_common.h:36
A ServerContext allows the person implementing a service handler to:
Definition: server_context.h:110
Definition: server_interface.h:54
grpc_call * call_
Definition: server_interface.h:194
CompletionQueue *const call_cq_
Definition: server_interface.h:190
const char * name_
Definition: server_interface.h:224
Definition: async_generic_service.h:36
A thin wrapper around grpc_completion_queue (see src/core/lib/surface/completion_queue.h).
Definition: completion_queue.h:97
CallbackGenericService is the base class for generic services implemented using the callback API and ...
Definition: async_generic_service.h:125
bool FinalizeResult(void **tag, bool *status) override
FinalizeResult must be called before informing user code that the operation bound to the underlying c...
Definition: server_interface.h:272
void Shutdown(const T &deadline)
Shutdown does the following things:
Definition: server_interface.h:91
An abstract collection of call ops, used to generate the grpc_call_op structure to pass down to the l...
Definition: call_op_set_interface.h:34
~PayloadAsyncRequest()
Definition: server_interface.h:268
ServerContext *const context_
Definition: server_interface.h:188
Internal errors.
Definition: status.h:127
virtual experimental_registration_interface * experimental_registration()
NOTE: The function experimental_registration() is not stable public API.
Definition: server_interface.h:137
Analogous to struct timespec.
Definition: gpr_types.h:47
Definition: server_interface.h:315
void *const tag_
Definition: server_interface.h:192
A specific type of completion queue used by the processing of notifications by servers.
Definition: completion_queue.h:384
This is an interface that Channel and Server implement to allow them to hook performing ops...
Definition: call_hook.h:30
NoPayloadAsyncRequest(internal::RpcServiceMethod *registered_method, ServerInterface *server, ServerContext *context, internal::ServerAsyncStreamingInterface *stream, CompletionQueue *call_cq, ServerCompletionQueue *notification_cq, void *tag)
Definition: server_interface.h:230
A sequence of bytes.
Definition: byte_buffer.h:64
Definition: server_interface.h:172
virtual bool FinalizeResult(void **tag, bool *status) override
FinalizeResult must be called before informing user code that the operation bound to the underlying c...
Definition: server_interface.h:209
Straightforward wrapping of the C call object.
Definition: call.h:36
::google::protobuf::Message Message
Definition: config_protobuf.h:78