userver: userver/ugrpc/server/middlewares/graceful_shutdown_headers/component.hpp Source File
Loading...
Searching...
No Matches
component.hpp
Go to the documentation of this file.
1#pragma once
2
3/// @file userver/ugrpc/server/middlewares/graceful_shutdown_headers/component.hpp
4/// @brief @copybrief ugrpc::server::middlewares::graceful_shutdown_headers::Component
5
6#include <userver/components/state.hpp>
7#include <userver/dynamic_config/source.hpp>
8#include <userver/ugrpc/server/middlewares/base.hpp>
9
10USERVER_NAMESPACE_BEGIN
11
12/// Middleware populating graceful shutdown headers
13/// @see @ref scripts/docs/en/userver/grpc/server_middlewares.md
14/// @see @ref ugrpc::server::middlewares::graceful_shutdown_headers::Component
15namespace ugrpc::server::middlewares::graceful_shutdown_headers {
16
17/// @ingroup userver_components userver_base_classes
18///
19/// @brief Component for gRPC server graceful_shutdown_headers
20///
21/// ## Static options inherited from @ref middlewares::MiddlewareFactoryComponentBase :
22/// @include{doc} scripts/docs/en/components_schema/core/src/middlewares/factory_component_base.md
23///
24/// Options inherited from @ref components::ComponentBase :
25/// @include{doc} scripts/docs/en/components_schema/core/src/components/impl/component_base.md
26///
27/// @see @ref scripts/docs/en/userver/grpc/server_middlewares.md
28class Component final : public MiddlewareFactoryComponentBase {
29public:
30 /// @ingroup userver_component_names
31 /// @brief The default name of ugrpc::server::middlewares::headers_propagator::Component
32 static constexpr std::string_view kName = "grpc-server-graceful-shutdown-headers";
33
34 Component(const components::ComponentConfig& config, const components::ComponentContext& context);
35
36 std::shared_ptr<const MiddlewareBase>
37 CreateMiddleware(const ugrpc::server::ServiceInfo&, const yaml_config::YamlConfig&) const override;
38
39private:
40 const components::State state_;
41 dynamic_config::Source source_;
42};
43
44} // namespace ugrpc::server::middlewares::graceful_shutdown_headers
45
46template <>
47inline constexpr bool components::kHasValidate<ugrpc::server::middlewares::graceful_shutdown_headers::Component> = true;
48
49template <>
50inline constexpr auto components::kConfigFileMode<
51 ugrpc::server::middlewares::graceful_shutdown_headers::Component> = ConfigFileMode::kNotRequired;
52
53USERVER_NAMESPACE_END