19 #ifndef GRPCPP_SERVER_IMPL_H
20 #define GRPCPP_SERVER_IMPL_H
45 class AsyncGenericService;
48 class ExternalConnectionAcceptorImpl;
106 return health_check_service_.get();
123 std::vector<std::unique_ptr<
125 interceptor_creators);
184 std::shared_ptr<std::vector<std::unique_ptr<ServerCompletionQueue>>>
186 int min_pollers,
int max_pollers,
int sync_cq_timeout_msec,
188 std::shared_ptr<grpc::internal::ExternalConnectionAcceptorImpl>>
191 std::vector<std::unique_ptr<
193 interceptor_creators = std::vector<std::unique_ptr<
209 std::unique_ptr<grpc::HealthCheckServiceInterface> service) {
210 health_check_service_ = std::move(service);
215 return health_check_service_disabled_;
220 std::unique_ptr<grpc::experimental::ServerInterceptorFactoryInterface>>*
221 interceptor_creators()
override {
222 return &interceptor_creators_;
231 template <
class ServerContextType>
232 class CallbackRequest;
250 class experimental_registration_type final
254 void RegisterCallbackGenericService(
256 server_->RegisterCallbackGenericService(service);
264 void RegisterCallbackGenericService(
270 experimental_registration_interface* experimental_registration()
override {
271 return &experimental_registration_;
279 int max_receive_message_size()
const override {
280 return max_receive_message_size_;
287 std::vector<std::shared_ptr<grpc::internal::ExternalConnectionAcceptorImpl>>
296 std::unique_ptr<grpc::experimental::ServerInterceptorFactoryInterface>>
297 interceptor_creators_;
299 const int max_receive_message_size_;
304 std::shared_ptr<std::vector<std::unique_ptr<ServerCompletionQueue>>>
309 std::vector<std::unique_ptr<SyncRequestThreadManager>> sync_req_mgrs_;
316 std::vector<gpr_atm> callback_unmatched_reqs_count_;
319 std::list<CallbackRequestBase*> callback_reqs_to_start_;
323 experimental_registration_type experimental_registration_{
this};
329 bool shutdown_notified_;
342 std::atomic<intptr_t> callback_reqs_outstanding_{0};
344 std::shared_ptr<GlobalCallbacks> global_callbacks_;
346 std::vector<grpc::string> services_;
347 bool has_async_generic_service_{
false};
348 bool has_callback_generic_service_{
false};
353 std::unique_ptr<grpc_impl::ServerInitializer> server_initializer_;
355 std::unique_ptr<grpc::HealthCheckServiceInterface> health_check_service_;
356 bool health_check_service_disabled_;
360 std::unique_ptr<grpc::experimental::CallbackGenericService>
361 unimplemented_service_;
364 std::unique_ptr<grpc::internal::MethodHandler> resource_exhausted_handler_;
367 std::unique_ptr<grpc::internal::MethodHandler> generic_handler_;
Definition: async_generic_service.h:75
Classes that require gRPC to be initialized should inherit from this class.
Definition: grpc_library.h:38
NOTE: class experimental_registration_interface is not part of the public API of this class TODO(vjpa...
Definition: server_interface.h:130
Definition: server_interface.h:59
Desriptor of an RPC service and its various RPC methods.
Definition: service_type.h:60
CallbackGenericService is the base class for generic services implemented using the callback API and ...
Definition: async_generic_service.h:121
Definition: client_interceptor.h:49
Definition: server_interceptor.h:47
Straightforward wrapping of the C call object.
Definition: call.h:38
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
Options for channel creation.
Definition: channel_arguments_impl.h:43
The gRPC server uses this interface to expose the health checking service without depending on protob...
Definition: health_check_service_interface_impl.h:28
Definition: server_cc.cc:537
Global callbacks are a set of hooks that are called when server events occur.
Definition: server_impl.h:78
virtual void UpdateArguments(ChannelArguments *)
Called before server is created.
Definition: server_impl.h:82
virtual void PreSynchronousRequest(grpc_impl::ServerContext *context)=0
Called before application callback for each synchronous server request.
virtual ~GlobalCallbacks()
Definition: server_impl.h:80
virtual void PreServerStart(Server *)
Called before server is started.
Definition: server_impl.h:88
virtual void AddPort(Server *, const grpc::string &, grpc::ServerCredentials *, int)
Called after a server port is added.
Definition: server_impl.h:90
virtual void PostSynchronousRequest(grpc_impl::ServerContext *context)=0
Called after application callback for each synchronous server request.
Definition: server_cc.cc:340
Definition: server_cc.cc:835
Use private inheritance rather than composition only to establish order of construction,...
Definition: server_cc.cc:296
UnimplementedAsyncResponse should not post user-visible completions to the C++ completion queue,...
Definition: server_cc.cc:319
NOTE: class experimental_type is not part of the public API of this class.
Definition: server_impl.h:115
std::shared_ptr< Channel > InProcessChannelWithInterceptors(const ChannelArguments &args, std::vector< std::unique_ptr< grpc::experimental::ClientInterceptorFactoryInterface >> interceptor_creators)
Establish a channel for in-process communication with client interceptors.
Definition: server_cc.cc:1071
experimental_type(Server *server)
Definition: server_impl.h:117
A builder class for the creation and startup of grpc::Server instances.
Definition: server_builder_impl.h:86
A specific type of completion queue used by the processing of notifications by servers.
Definition: completion_queue_impl.h:389
A ServerContext or CallbackServerContext allows the code implementing a service handler to:
Definition: server_context_impl.h:488
Wrapper around grpc_server_credentials, a way to authenticate a server.
Definition: server_credentials_impl.h:40
Represents a gRPC server.
Definition: server_impl.h:62
void Start(ServerCompletionQueue **cqs, size_t num_cqs) override
Start the server.
Definition: server_cc.cc:1190
bool RegisterService(const grpc::string *host, grpc::Service *service) override
Register a service.
Definition: server_cc.cc:1096
~Server()
Definition: server_cc.cc:1025
std::shared_ptr< Channel > InProcessChannel(const ChannelArguments &args)
Establish a channel for in-process communication.
Definition: server_cc.cc:1061
static void SetGlobalCallbacks(GlobalCallbacks *callbacks)
Set the global callback object.
Definition: server_cc.cc:1053
bool health_check_service_disabled() const
NOTE: This method is not part of the public API for this class.
Definition: server_impl.h:214
int AddListeningPort(const grpc::string &addr, grpc::ServerCredentials *creds) override
Try binding the server to the given addr endpoint (port, and optionally including IP address to bind ...
Definition: server_cc.cc:1182
Server(int max_message_size, ChannelArguments *args, std::shared_ptr< std::vector< std::unique_ptr< ServerCompletionQueue >>> sync_server_cqs, int min_pollers, int max_pollers, int sync_cq_timeout_msec, std::vector< std::shared_ptr< grpc::internal::ExternalConnectionAcceptorImpl >> acceptors, grpc_resource_quota *server_rq=nullptr, std::vector< std::unique_ptr< grpc::experimental::ServerInterceptorFactoryInterface >> interceptor_creators=std::vector< std::unique_ptr< grpc::experimental::ServerInterceptorFactoryInterface >>())
NOTE: This is NOT a public API.
Definition: server_cc.cc:955
grpc_server * server() override
Definition: server_impl.h:204
grpc_server * c_server()
Returns a raw pointer to the underlying grpc_server instance.
Definition: server_cc.cc:1059
grpc::HealthCheckServiceInterface * GetHealthCheckService() const
Returns the health check service.
Definition: server_impl.h:105
void set_health_check_service(std::unique_ptr< grpc::HealthCheckServiceInterface > service)
NOTE: This method is not part of the public API for this class.
Definition: server_impl.h:208
void Wait() override
Block until the server shuts down.
Definition: server_cc.cc:1352
experimental_type experimental()
NOTE: The function experimental() is not stable public API.
Definition: server_impl.h:134
Definition: server_initializer_impl.h:34
struct grpc_resource_quota grpc_resource_quota
Definition: grpc_types.h:677
struct grpc_server grpc_server
A server listens to some port and responds to request calls.
Definition: grpc_types.h:65
An Alarm posts the user-provided tag to its associated completion queue or invokes the user-provided ...
Definition: alarm_impl.h:33
This header provides an object that reads bytes directly from a grpc::ByteBuffer, via the ZeroCopyInp...
Definition: alarm.h:24
::grpc_impl::ServerContext ServerContext
Definition: server_context.h:26
::grpc_impl::ServerInitializer ServerInitializer
Definition: server_initializer.h:26
::grpc_impl::HealthCheckServiceInterface HealthCheckServiceInterface
Definition: health_check_service_interface.h:29
::grpc_impl::CompletionQueue CompletionQueue
Definition: completion_queue.h:26
std::string string
Definition: config.h:35
Analogous to struct timespec.
Definition: gpr_types.h:47