25class RequestContext
final {
29 RequestContext(RequestContext&&)
noexcept;
31 RequestContext(
const RequestContext&) =
delete;
37 template <
typename Data>
42 template <
typename Data,
typename... Args>
48 template <
typename Data>
54 template <
typename Data>
59 template <
typename Data>
64 template <
typename Data>
73 template <
typename Data>
74 Data&
SetData(std::string name, Data data);
79 template <
typename Data,
typename... Args>
80 Data&
EmplaceData(std::string name, Args&&... args);
85 template <
typename Data>
86 Data&
GetData(std::string_view name);
91 template <
typename Data>
92 const Data&
GetData(std::string_view name)
const;
96 template <
typename Data>
101 template <
typename Data>
102 const std::remove_reference_t<Data>*
GetDataOptional(std::string_view name)
const;
108 impl::InternalRequestContext& GetInternalContext();
111 utils::AnyMovable& SetUserAnyData(
utils::AnyMovable&& data);
112 utils::AnyMovable& GetUserAnyData();
113 utils::AnyMovable* GetUserAnyDataOptional();
114 void EraseUserAnyData();
116 utils::AnyMovable& SetAnyData(std::string&& name,
utils::AnyMovable&& data);
117 utils::AnyMovable& GetAnyData(std::string_view name);
118 utils::AnyMovable* GetAnyDataOptional(std::string_view name);
119 void EraseAnyData(std::string_view name);
122 static constexpr std::size_t kPimplSize = 112;
123 utils::FastPimpl<Impl, kPimplSize,
alignof(
void*)> impl_;