userver: userver/ugrpc/server/middlewares/groups.hpp Source File
Loading...
Searching...
No Matches
groups.hpp
Go to the documentation of this file.
1#pragma once
2
3/// @file userver/ugrpc/server/middlewares/groups.hpp
4/// @brief
5/// There are groups of middlewares to build a pipeline.
6/// @see @ref scripts/docs/en/userver/grpc_server_middlewares.md
7
8#include <userver/ugrpc/server/middlewares/pipeline.hpp>
9
10USERVER_NAMESPACE_BEGIN
11
12/// Server middlewares groups for middlewares pipeline.
13/// @see @ref scripts/docs/en/userver/grpc_server_middlewares.md
14namespace ugrpc::server::groups {
15
16/// @brief The first group in the pipeline.
17struct PreCore final {
18 static constexpr std::string_view kName = "pre-core";
19 static inline const auto dependency = MiddlewareDependencyBuilder();
20};
21
22/// @brief The Group to work wih logging. Is located after PreCore.
23///
24/// @details There are:
25/// ugrpc::server::middlewares::log::Component.
26struct Logging final {
27 static constexpr std::string_view kName = "logging";
28 static inline const auto dependency = MiddlewareDependencyBuilder().After<PreCore>();
29};
30
31/// @brief The Group for authentication middlewares. Is located after `Logging`.
32struct Auth final {
33 static constexpr std::string_view kName = "auth";
34 static inline const auto dependency = MiddlewareDependencyBuilder().After<Logging>();
35};
36
37/// @brief The core group of middlewares. Is located after `Auth`.
38///
39/// @details There are:
40/// * ugrpc::server::middlewares::congestion_control::Component
41/// * ugrpc::server::middlewares::deadline_propagation::Component
42struct Core final {
43 static constexpr std::string_view kName = "core";
44 static inline const auto dependency = MiddlewareDependencyBuilder().After<Auth>();
45};
46
47/// @brief The group is located after `Core`.
48struct PostCore final {
49 static constexpr std::string_view kName = "post-core";
50 static inline const auto dependency = MiddlewareDependencyBuilder().After<Core>();
51};
52
53/// @brief The group for user middlewares - the last group in pipeline. It group used by default.
54///
55/// @details There are:
56/// * ugrpc::server::middlewares::baggage::Component
57/// * ugrpc::server::middlewares::field_mask::Component
58/// * ugrpc::server::middlewares::headers_propagator::Component
59struct User final {
60 static constexpr std::string_view kName = "user";
61 static inline const auto dependency = MiddlewareDependencyBuilder().After<PostCore>();
62};
63
64} // namespace ugrpc::server::groups
65
66USERVER_NAMESPACE_END