userver: userver/ugrpc/client/common_component.hpp Source File
Loading...
Searching...
No Matches
common_component.hpp
Go to the documentation of this file.
1#pragma once
2
3/// @file userver/ugrpc/client/common_component.hpp
4/// @brief @copybrief ugrpc::client::CommonComponent
5
6#include <optional>
7
8#include <userver/components/component_base.hpp>
9#include <userver/engine/task/task_processor_fwd.hpp>
10
11#include <userver/ugrpc/client/impl/completion_queue_pool.hpp>
12#include <userver/ugrpc/client/proxy_settings.hpp>
13#include <userver/ugrpc/impl/completion_queue_pool_base.hpp>
14#include <userver/ugrpc/impl/statistics_storage.hpp>
15
16USERVER_NAMESPACE_BEGIN
17
18namespace ugrpc::client {
19
20// clang-format off
21
22/// @ingroup userver_components
23///
24/// @brief Contains common machinery that's required for all ugrpc clients
25///
26/// ## Static options:
27/// The component name for static config is `"grpc-client-common"`.
28///
29/// Name | Description | Default value
30/// ---- | ----------- | -------------
31/// blocking-task-processor | the task processor for blocking channel creation | -
32/// native-log-level | min log level for the native gRPC library | 'error'
33/// proxy-address | proxy server address | ''
34/// servicemesh-settings | settings for service mesh integration | -
35///
36/// @see ugrpc::client::ClientFactoryComponent
37
38// clang-format on
39class CommonComponent final : public components::ComponentBase {
40public:
41 /// @ingroup userver_component_names
42 /// @brief The default name of ugrpc::client::CommonComponent
43 static constexpr std::string_view kName = "grpc-client-common";
44
45 CommonComponent(const components::ComponentConfig& config, const components::ComponentContext& context);
46 ~CommonComponent() override;
47
48 static yaml_config::Schema GetStaticConfigSchema();
49
50private:
51 friend class ClientFactoryComponent;
52
53 engine::TaskProcessor& blocking_task_processor_;
54 std::optional<impl::CompletionQueuePool> client_completion_queues_;
55 ugrpc::impl::CompletionQueuePoolBase& completion_queues_;
56 ugrpc::impl::StatisticsStorage client_statistics_storage_;
57 ProxySettings proxy_settings_;
58};
59
60} // namespace ugrpc::client
61
62template <>
63inline constexpr bool components::kHasValidate<ugrpc::client::CommonComponent> = true;
64
65USERVER_NAMESPACE_END