26class RequestContext
final {
30 RequestContext(RequestContext&&)
noexcept;
32 RequestContext(
const RequestContext&) =
delete;
38 template <
typename Data>
43 template <
typename Data,
typename... Args>
49 template <
typename Data>
55 template <
typename Data>
60 template <
typename Data>
65 template <
typename Data>
74 template <
typename Data>
75 Data&
SetData(std::string name, Data data);
80 template <
typename Data,
typename... Args>
81 Data&
EmplaceData(std::string name, Args&&... args);
86 template <
typename Data>
87 Data&
GetData(std::string_view name);
92 template <
typename Data>
93 const Data&
GetData(std::string_view name)
const;
97 template <
typename Data>
102 template <
typename Data>
103 const std::remove_reference_t<Data>*
GetDataOptional(std::string_view name)
const;
116 impl::InternalRequestContext& GetInternalContext();
119 utils::AnyMovable& SetUserAnyData(
utils::AnyMovable&& data);
120 utils::AnyMovable& GetUserAnyData();
121 utils::AnyMovable* GetUserAnyDataOptional();
122 void EraseUserAnyData();
124 utils::AnyMovable& SetAnyData(std::string&& name,
utils::AnyMovable&& data);
125 utils::AnyMovable& GetAnyData(std::string_view name);
126 utils::AnyMovable* GetAnyDataOptional(std::string_view name);
127 void EraseAnyData(std::string_view name);
130 static constexpr std::size_t kPimplSize = 120;
131 utils::FastPimpl<Impl, kPimplSize,
alignof(
void*)> impl_;