userver: userver/utils/statistics/entry.hpp Source File
⚠️ This is the documentation for an old userver version. Click here to switch to the latest version.
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages Concepts
entry.hpp
Go to the documentation of this file.
1#pragma once
2
3/// @file userver/utils/statistics/entry.hpp
4/// @brief Header with all the types required in component header to use
5/// statistics (includes utils::statistics::Entry and forward declarations).
6
7#include <userver/utils/fast_pimpl.hpp>
8#include <userver/utils/statistics/fwd.hpp>
9
10USERVER_NAMESPACE_BEGIN
11
12namespace utils::statistics {
13
14namespace impl {
15enum class UnregisteringKind { kManual, kAutomatic };
16}
17
18/// @brief Statistics registration holder, used to unregister a metric source
19/// before it is destroyed.
20///
21/// See utils::statistics::Storage for info on registrations
22class [[nodiscard]] Entry final {
23 public:
24 Entry();
25
26 Entry(const Entry& other) = delete;
27 Entry& operator=(const Entry& other) = delete;
28 Entry(Entry&& other) noexcept;
29 Entry& operator=(Entry&& other) noexcept;
30 ~Entry();
31
32 void Unregister() noexcept;
33
34 private:
35 struct Impl;
36
37 friend class Storage; // in RegisterExtender()
38
39 explicit Entry(const Impl& impl) noexcept;
40
41 utils::FastPimpl<Impl, 16, 8> impl_;
42};
43
44} // namespace utils::statistics
45
46USERVER_NAMESPACE_END