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_;
379 #endif // GRPCPP_SERVER_IMPL_H
std::shared_ptr< Channel > InProcessChannel(const ChannelArguments &args)
Establish a channel for in-process communication.
Definition: server_cc.cc:1061
virtual void PreServerStart(Server *)
Called before server is started.
Definition: server_impl.h:88
grpc::HealthCheckServiceInterface * GetHealthCheckService() const
Returns the health check service.
Definition: server_impl.h:105
std::string string
Definition: config.h:35
Use private inheritance rather than composition only to establish order of construction, since the public base class should be constructed after the elements belonging to the private base class are constructed.
Definition: server_cc.cc:294
bool health_check_service_disabled() const
NOTE: This method is not part of the public API for this class.
Definition: server_impl.h:214
Represents a gRPC server.
Definition: server_impl.h:62
NOTE: class experimental_registration_interface is not part of the public API of this class TODO(vjpa...
Definition: server_interface.h:130
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 * c_server()
Returns a raw pointer to the underlying grpc_server instance.
Definition: server_cc.cc:1059
Desriptor of an RPC service and its various RPC methods.
Definition: service_type.h:60
Global callbacks are a set of hooks that are called when server events occur.
Definition: server_impl.h:78
struct grpc_server grpc_server
A server listens to some port and responds to request calls.
Definition: grpc_types.h:65
virtual void PreSynchronousRequest(grpc_impl::ServerContext *context)=0
Called before application callback for each synchronous server request.
Definition: async_generic_service.h:75
void Wait() override
Block until the server shuts down.
Definition: server_cc.cc:1352
Classes that require gRPC to be initialized should inherit from this class.
Definition: grpc_library.h:38
NOTE: class experimental_type is not part of the public API of this class.
Definition: server_impl.h:115
::grpc_impl::ServerContext ServerContext
Definition: server_context.h:26
A ServerContext or CallbackServerContext allows the code implementing a service handler to: ...
Definition: server_context_impl.h:488
Definition: server_cc.cc:537
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
Definition: server_interceptor.h:47
Definition: client_interceptor.h:49
UnimplementedAsyncResponse should not post user-visible completions to the C++ completion queue...
Definition: server_cc.cc:316
void Start(ServerCompletionQueue **cqs, size_t num_cqs) override
Start the server.
Definition: server_cc.cc:1190
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
static void SetGlobalCallbacks(GlobalCallbacks *callbacks)
Set the global callback object.
Definition: server_cc.cc:1053
::grpc_impl::CompletionQueue CompletionQueue
Definition: completion_queue.h:26
The gRPC server uses this interface to expose the health checking service without depending on protob...
Definition: health_check_service_interface_impl.h:28
This header provides an object that reads bytes directly from a grpc::ByteBuffer, via the ZeroCopyInp...
Definition: alarm.h:24
Options for channel creation.
Definition: channel_arguments_impl.h:43
Definition: server_interface.h:59
::grpc_impl::HealthCheckServiceInterface HealthCheckServiceInterface
Definition: health_check_service_interface.h:29
An Alarm posts the user-provided tag to its associated completion queue or invokes the user-provided ...
Definition: alarm_impl.h:33
CallbackGenericService is the base class for generic services implemented using the callback API and ...
Definition: async_generic_service.h:121
Wrapper around grpc_server_credentials, a way to authenticate a server.
Definition: server_credentials_impl.h:40
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
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
virtual void PostSynchronousRequest(grpc_impl::ServerContext *context)=0
Called after application callback for each synchronous server request.
experimental_type(Server *server)
Definition: server_impl.h:117
Definition: server_cc.cc:340
struct grpc_resource_quota grpc_resource_quota
Definition: grpc_types.h:677
experimental_type experimental()
NOTE: The function experimental() is not stable public API.
Definition: server_impl.h:134
Analogous to struct timespec.
Definition: gpr_types.h:47
::grpc_impl::ServerInitializer ServerInitializer
Definition: server_initializer.h:26
A specific type of completion queue used by the processing of notifications by servers.
Definition: completion_queue_impl.h:389
virtual void AddPort(Server *, const grpc::string &, grpc::ServerCredentials *, int)
Called after a server port is added.
Definition: server_impl.h:90
~Server()
Definition: server_cc.cc:1025
Definition: server_cc.cc:835
bool RegisterService(const grpc::string *host, grpc::Service *service) override
Register a service.
Definition: server_cc.cc:1096
A builder class for the creation and startup of grpc::Server instances.
Definition: server_builder_impl.h:86
virtual void UpdateArguments(ChannelArguments *)
Called before server is created.
Definition: server_impl.h:82
virtual ~GlobalCallbacks()
Definition: server_impl.h:80
grpc_server * server() override
Definition: server_impl.h:204
Definition: server_initializer_impl.h:34
Straightforward wrapping of the C call object.
Definition: call.h:38