Go to the documentation of this file.
19 #ifndef GRPCPP_SERVER_INTERFACE_H
20 #define GRPCPP_SERVER_INTERFACE_H
33 #include "absl/log/absl_check.h"
37 class AsyncGenericService;
39 class CompletionQueue;
40 class GenericServerContext;
41 class ServerCompletionQueue;
42 class ServerCredentials;
49 class ServerAsyncStreamingInterface;
52 class CallbackGenericService;
54 namespace experimental {
55 class ServerInterceptorFactoryInterface;
56 class ServerMetricRecorder;
111 virtual void Wait() = 0;
168 bool delete_on_finalize);
174 void ContinueFinalizeResultAfterInterception();
200 void* tag,
const char* name,
211 *
server_->interceptor_creators()));
231 server, context, stream, call_cq, notification_cq, tag,
232 registered_method->name(), registered_method->method_type()) {
239 template <
class Message>
249 server, context, stream, call_cq, notification_cq, tag,
250 registered_method->name(), registered_method->method_type()),
251 registered_method_(registered_method),
267 if (!payload_.
Valid() ||
274 "Unable to parse request",
nullptr);
302 bool delete_on_finalize,
bool issue_request =
true);
313 template <
class Message>
322 notification_cq, tag, message);
333 notification_cq, tag);
352 std::unique_ptr<experimental::ServerInterceptorFactoryInterface>>*
353 interceptor_creators() {
358 virtual bool call_metric_recording_enabled()
const = 0;
361 virtual experimental::ServerMetricRecorder* server_metric_recorder()
376 #endif // GRPCPP_SERVER_INTERFACE_H
Definition: server_interface.h:162
RegisteredAsyncRequest is not part of the C++ API.
Definition: server_interface.h:193
Definition: service_type.h:38
bool done_intercepting_
Definition: server_interface.h:187
Records server wide metrics to be reported to the client.
Definition: server_metric_recorder.h:42
A ServerContext or CallbackServerContext allows the code implementing a service handler to:
Definition: server_context.h:586
An Alarm posts the user-provided tag to its associated completion queue or invokes the user-provided ...
Definition: alarm.h:33
grpc::ServerCompletionQueue *const notification_cq_
Definition: server_interface.h:181
@ GPR_CLOCK_MONOTONIC
Monotonic clock.
Definition: time.h:33
auto Deserialize(BufferPtr buffer, Message *msg)
Definition: serialization_traits.h:120
void Shutdown()
Shutdown the server without a deadline and forced cancellation.
Definition: server_interface.h:105
grpc::CompletionQueue *const call_cq_
Definition: server_interface.h:180
Definition: grpc_types.h:257
const char * name_
Definition: server_interface.h:218
Wrapper around grpc_server_credentials, a way to authenticate a server.
Definition: server_credentials.h:69
~PayloadAsyncRequest() override
Definition: server_interface.h:257
Straightforward wrapping of the C call object.
Definition: call.h:34
Definition: server_interface.h:240
virtual void ShutdownInternal(gpr_timespec deadline)=0
void RequestAsyncCall(internal::RpcServiceMethod *method, grpc::ServerContext *context, internal::ServerAsyncStreamingInterface *stream, grpc::CompletionQueue *call_cq, grpc::ServerCompletionQueue *notification_cq, void *tag)
Definition: server_interface.h:325
Descriptor of an RPC service and its various RPC methods.
Definition: service_type.h:57
virtual bool RegisterService(const std::string *host, Service *service)=0
Register a service.
virtual void RegisterCallbackGenericService(CallbackGenericService *)
Register a callback generic service.
Definition: server_interface.h:131
GPRAPI gpr_timespec gpr_inf_future(gpr_clock_type type)
The far future.
~BaseAsyncRequest() override
NoPayloadAsyncRequest(internal::RpcServiceMethod *registered_method, ServerInterface *server, grpc::ServerContext *context, internal::ServerAsyncStreamingInterface *stream, grpc::CompletionQueue *call_cq, grpc::ServerCompletionQueue *notification_cq, void *tag)
Definition: server_interface.h:224
void *const tag_
Definition: server_interface.h:182
grpc::ServerContext *const context_
Definition: server_interface.h:178
internal::Call call_wrapper_
Definition: server_interface.h:185
bool FinalizeResult(void **tag, bool *status) override
FinalizeResult must be called before informing user code that the operation bound to the underlying c...
@ GRPC_STATUS_INTERNAL
Internal errors.
Definition: status.h:129
bool FinalizeResult(void **tag, bool *status) override
FinalizeResult must be called before informing user code that the operation bound to the underlying c...
GRPCAPI void grpc_call_unref(grpc_call *call)
Unref a call.
PayloadAsyncRequest(internal::RpcServiceMethod *registered_method, ServerInterface *server, grpc::ServerContext *context, internal::ServerAsyncStreamingInterface *stream, grpc::CompletionQueue *call_cq, grpc::ServerCompletionQueue *notification_cq, void *tag, Message *request)
Definition: server_interface.h:242
struct grpc_call grpc_call
A Call represents an RPC.
Definition: grpc_types.h:68
Definition: grpc_types.h:41
A sequence of bytes.
Definition: byte_buffer.h:59
const bool delete_on_finalize_
Definition: server_interface.h:183
virtual void RegisterAsyncGenericService(AsyncGenericService *service)=0
Register a generic service.
virtual grpc_server * server()=0
virtual int max_receive_message_size() const =0
void IssueRequest(void *registered_method, grpc_byte_buffer **payload, grpc::ServerCompletionQueue *notification_cq)
struct grpc_server grpc_server
A server listens to some port and responds to request calls.
Definition: grpc_types.h:63
Definition: server_interface.h:222
void Shutdown(const T &deadline)
Shutdown does the following things:
Definition: server_interface.h:96
grpc_call * call_
Definition: server_interface.h:184
Definition: async_generic_service.h:66
ServerInterface *const server_
Definition: server_interface.h:177
void * server_tag() const
Definition: rpc_service_method.h:105
RpcType
Definition: rpc_method.h:31
Definition: async_generic_service.h:37
An interface allowing implementors to process and filter event tags.
Definition: completion_queue_tag.h:26
void SetRecvMessage(void *message, bool *hijacked_recv_message_failed)
Definition: interceptor_common.h:169
const internal::RpcMethod::RpcType type_
Definition: server_interface.h:219
RegisteredAsyncRequest(ServerInterface *server, grpc::ServerContext *context, internal::ServerAsyncStreamingInterface *stream, grpc::CompletionQueue *call_cq, grpc::ServerCompletionQueue *notification_cq, void *tag, const char *name, internal::RpcMethod::RpcType type)
void RequestAsyncCall(internal::RpcServiceMethod *method, grpc::ServerContext *context, internal::ServerAsyncStreamingInterface *stream, grpc::CompletionQueue *call_cq, grpc::ServerCompletionQueue *notification_cq, void *tag, Message *message)
Definition: server_interface.h:314
void RequestAsyncGenericCall(GenericServerContext *context, internal::ServerAsyncStreamingInterface *stream, grpc::CompletionQueue *call_cq, grpc::ServerCompletionQueue *notification_cq, void *tag)
Definition: server_interface.h:336
virtual int AddListeningPort(const std::string &addr, ServerCredentials *creds)=0
Tries to bind server to the given addr.
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:203
A specific type of completion queue used by the processing of notifications by servers.
Definition: completion_queue.h:426
bool call_metric_recording_enabled_
Definition: server_interface.h:188
experimental::ServerMetricRecorder * server_metric_recorder_
Definition: server_interface.h:189
A thin wrapper around grpc_completion_queue (see src/core/lib/surface/completion_queue....
Definition: completion_queue.h:104
Definition: server_interface.h:296
Definition: memory_allocator.h:33
bool Valid() const
Is this ByteBuffer valid?
Definition: byte_buffer.h:158
internal::ServerAsyncStreamingInterface *const stream_
Definition: server_interface.h:179
Server side rpc method class.
Definition: rpc_service_method.h:86
void Release()
Forget underlying byte buffer without destroying Use this only for un-owned byte buffers.
Definition: byte_buffer.h:143
Definition: server_interface.h:59
virtual ~ServerInterface()
Definition: server_interface.h:61
Analogous to struct timespec.
Definition: time.h:47
::google::protobuf::Message Message
Definition: config_protobuf.h:89
virtual void Wait()=0
Block waiting for all work to complete.
internal::InterceptorBatchMethodsImpl interceptor_methods_
Definition: server_interface.h:186
BaseAsyncRequest(ServerInterface *server, grpc::ServerContext *context, internal::ServerAsyncStreamingInterface *stream, grpc::CompletionQueue *call_cq, grpc::ServerCompletionQueue *notification_cq, void *tag, bool delete_on_finalize)
virtual void Start(grpc::ServerCompletionQueue **cqs, size_t num_cqs)=0
Start the server.
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:261
Definition: interceptor_common.h:37
GRPCAPI grpc_call_error grpc_call_cancel_with_status(grpc_call *call, grpc_status_code status, const char *description, void *reserved)
Cancel an RPC.
GenericAsyncRequest(ServerInterface *server, GenericServerContext *context, internal::ServerAsyncStreamingInterface *stream, grpc::CompletionQueue *call_cq, grpc::ServerCompletionQueue *notification_cq, void *tag, bool delete_on_finalize, bool issue_request=true)
If you are trying to use CompletionQueue::AsyncNext with a time class that isn't either gpr_timespec ...
Definition: time.h:40
void AddInterceptionHookPoint(experimental::InterceptionHookPoints type)
Definition: interceptor_common.h:79
virtual grpc_event_engine::experimental::MemoryAllocator * memory_allocator()=0
CallbackGenericService is the base class for generic services implemented using the callback API and ...
Definition: callback_generic_service.h:51