userver: userver/clients/http/middlewares/component.hpp Source File
Loading...
Searching...
No Matches
component.hpp
Go to the documentation of this file.
1#pragma once
2
3/// @file userver/clients/http/middlewares/component.hpp
4/// @brief @copybrief clients::http::middlewares::ComponentBase
5
6#include <cstdint>
7
8#include <userver/clients/http/middlewares/base.hpp>
9#include <userver/components/component_base.hpp>
10#include <userver/utils/impl/internal_tag_fwd.hpp>
11#include <userver/utils/strong_typedef.hpp>
12
13USERVER_NAMESPACE_BEGIN
14
15namespace clients::http::middlewares {
16
17using MiddlewareIndex = utils::StrongTypedef<class MiddlewareIndexTag, std::uint32_t>;
18
19/// @brief Base component for HTTP client middleware plugins
21public:
22 virtual MiddlewareBase& GetMiddleware() = 0;
23
24 /// @cond
25 // For internal use only.
26 MiddlewareIndex GetIndex(utils::impl::InternalTag) const;
27 /// @endcond
28protected:
29 ComponentBase(
30 const components::ComponentConfig& config,
31 const components::ComponentContext& context,
32 MiddlewareIndex index
33 );
34
35private:
36 MiddlewareIndex index_;
37};
38
39} // namespace clients::http::middlewares
40
41USERVER_NAMESPACE_END