userver: userver/ugrpc/server/service_base.hpp Source File
Loading...
Searching...
No Matches
service_base.hpp
Go to the documentation of this file.
1#pragma once
2
3/// @file userver/ugrpc/server/service_base.hpp
4/// @brief @copybrief ugrpc::server::ServiceBase
5
6#include <boost/container/flat_map.hpp>
7
8#include <userver/engine/task/task_processor_fwd.hpp>
9
10#include <userver/ugrpc/server/call_context.hpp>
11#include <userver/ugrpc/server/impl/service_worker.hpp>
12#include <userver/ugrpc/server/middlewares/fwd.hpp>
13#include <userver/ugrpc/status_codes.hpp>
14
15USERVER_NAMESPACE_BEGIN
16
17namespace ugrpc::server {
18
19namespace impl {
20struct ServiceInternals;
21} // namespace impl
22
23/// Per-service settings
24struct ServiceConfig final {
25 /// TaskProcessor to use for serving RPCs.
26 engine::TaskProcessor& task_processor;
27
28 /// Server middlewares to use for the gRPC service.
29 Middlewares middlewares;
30
31 /// map of "status_code": log_level items to override span log level for specific status codes
32 /// see @ref ugrpc::kStatusCodesMap for available statuses
33 boost::container::flat_map<grpc::StatusCode, logging::Level> status_codes_log_level;
34};
35
36/// @brief The type-erased base class for all gRPC service implementations
37/// @note User-defined services should inherit from code-generated base service
38/// classes, not from this class directly.
40public:
41 using CallContext = ugrpc::server::CallContext;
42
43 ServiceBase& operator=(ServiceBase&&) = delete;
44 virtual ~ServiceBase();
45
46 /// @cond
47 // Creates a worker that forwards requests to this service.
48 // The service must be destroyed after the worker.
49 // For internal use only.
50 virtual std::unique_ptr<impl::ServiceWorker> MakeWorker(impl::ServiceInternals&& internals) = 0;
51 /// @endcond
52};
53
54} // namespace ugrpc::server
55
56USERVER_NAMESPACE_END