From: Adam C. Emerson Date: Wed, 26 Jul 2017 22:11:19 +0000 (-0400) Subject: common: Automatic reference to PerfCounters X-Git-Tag: v13.0.0~153^2~1 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=793ba0443cd366119d89407e30f71975e9a73243;p=ceph-ci.git common: Automatic reference to PerfCounters PerfCountersRef is a unique_ptr using a deleter that unregisters the managed PerfCounters on deletion. Signed-off-by: Adam C. Emerson --- diff --git a/src/common/perf_counters.h b/src/common/perf_counters.h index e831b73ad68..507d09102de 100644 --- a/src/common/perf_counters.h +++ b/src/common/perf_counters.h @@ -324,4 +324,19 @@ private: PerfCounters *m_perf_counters; }; +class PerfCountersDeleter { + CephContext* cct; + +public: + PerfCountersDeleter() noexcept : cct(nullptr) {} + PerfCountersDeleter(CephContext* cct) noexcept : cct(cct) {} + void operator()(PerfCounters* p) noexcept { + if (cct) + cct->get_perfcounters_collection()->remove(p); + delete p; + } +}; + +using PerfCountersRef = std::unique_ptr; + #endif