8#include <userver/components/component_base.hpp>
9#include <userver/engine/task/task_processor_fwd.hpp>
10#include <userver/middlewares/runner.hpp>
11#include <userver/utils/box.hpp>
12#include <userver/yaml_config/fwd.hpp>
14#include <userver/ugrpc/server/middlewares/fwd.hpp>
15#include <userver/ugrpc/server/service_base.hpp>
17USERVER_NAMESPACE_BEGIN
19namespace ugrpc::server {
22class GenericServiceBase;
29using MiddlewareRunnerComponentBase = USERVER_NAMESPACE::middlewares::RunnerComponentBase<MiddlewareBase, ServiceInfo>;
51 ServiceComponentBase(
const components::ComponentConfig& config,
const components::ComponentContext& context);
53 ~ServiceComponentBase() override;
66 ServerComponent& server_;
67 ServiceConfig config_;
68 std::atomic<
bool> registered_{
false};
69 utils::Box<ServiceInfo> info_;
74template <
typename ServiceInterface>
77 static_assert(std::is_base_of_v<ServiceBase, ServiceInterface> || std::is_base_of_v<GenericServiceBase, ServiceInterface>);
80 ServiceComponentBase(
const components::ComponentConfig& config,
const components::ComponentContext& context)
87 RegisterService(*
this);