42 [[nodiscard]] std::uint64_t
version() const noexcept
override {
43 return version_.load(std::memory_order_acquire);
47 const std::scoped_lock lock(mutex_);
55 const std::scoped_lock lock(mutex_);
56 adapter_ =
adapter ? std::move(
adapter) : std::make_shared<NullAdapter>();
58 version_.fetch_add(1, std::memory_order_release);
62 mutable std::mutex mutex_;
64 std::atomic<std::uint64_t> version_{0};
72[[nodiscard]]
inline std::shared_ptr<AdapterCell> global_adapter_cell() {
73 static auto cell = std::make_shared<AdapterCell>();
A swappable adapter slot shared by every metric that reads from it.
Definition global.hpp:34
AdapterCell()
Definition global.hpp:36
std::uint64_t version() const noexcept override
Monotonic counter, bumped on every adapter swap.
Definition global.hpp:42
void set_adapter(AdapterPtr adapter)
Install adapter as the new backend (or reset to a fresh NullAdapter when null) and bump the version s...
Definition global.hpp:53
AdapterPtr adapter() const override
The current adapter, never null.
Definition global.hpp:46
AdapterCell(AdapterPtr adapter)
Construct with adapter (or a fresh NullAdapter when null).
Definition global.hpp:39
The source a metric reads its current adapter from, decoupled from Registry so that metric_base can r...
Definition adapter.hpp:114
A backend that records nothing.
Definition null_adapter.hpp:24
The backend boundary: MetricMeta, MetricState/MetricHandle, and the pure-virtual Adapter interface.
Definition adapter.hpp:24
std::shared_ptr< Adapter > AdapterPtr
Shared ownership of an Adapter.
Definition fwd.hpp:38
NullAdapter — the always-available no-op backend.