userver: userver/ugrpc/client/middlewares/origin/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/client/middlewares/origin/component.hpp
4/// @brief @copybrief ugrpc::client::middlewares::origin::Component
5
6#include <userver/ugrpc/client/middlewares/base.hpp>
7
8USERVER_NAMESPACE_BEGIN
9
10/// Server origin middleware
11/// @see @ref scripts/docs/en/userver/grpc/client_middlewares.md
12/// @see @ref ugrpc::client::middlewares::origin::Component
13namespace ugrpc::client::middlewares::origin {
14
15/// @ingroup userver_components
16///
17/// @brief gRPC client middleware that sets `x-origin` metadata. gRPC server will then copy that to `useragent` tag
18/// in server request log.
19///
20/// ## Static options of ugrpc::client::middlewares::log::Component:
21/// @include{doc} scripts/docs/en/components_schema/grpc/src/ugrpc/client/middlewares/origin/component.md
22///
23/// Options inherited from @ref middlewares::MiddlewareFactoryComponentBase :
24/// @include{doc} scripts/docs/en/components_schema/core/src/middlewares/factory_component_base.md
25///
26/// Options inherited from @ref components::ComponentBase :
27/// @include{doc} scripts/docs/en/components_schema/core/src/components/impl/component_base.md
28///
29/// Config example:
30/// @snippet samples/grpc_middleware_service/configs/static_config.yaml grpc-client-origin
31///
32/// @see @ref scripts/docs/en/userver/grpc/client_middlewares.md
33class Component final : public MiddlewareFactoryComponentBase {
34public:
35 /// @ingroup userver_component_names
36 /// @brief The default name of ugrpc::client::middlewares::headers_propagator::Component.
37 static constexpr std::string_view kName = "grpc-client-origin";
38
39 Component(const components::ComponentConfig& config, const components::ComponentContext& context);
40
41 ~Component() override;
42
43 static yaml_config::Schema GetStaticConfigSchema();
44
45 yaml_config::Schema GetMiddlewareConfigSchema() const override;
46
47 std::shared_ptr<const MiddlewareBase> CreateMiddleware(
48 const ugrpc::client::ClientInfo&,
49 const yaml_config::YamlConfig& middleware_config
50 ) const override;
51};
52
53} // namespace ugrpc::client::middlewares::origin
54
55USERVER_NAMESPACE_END