================ @@ -73,9 +106,46 @@ class TelemetryManager : public llvm::telemetry::Manager { private: std::unique_ptr<llvm::telemetry::Config> m_config; + // Each instance of a TelemetryManager is assigned a unique ID. + const std::string m_id; + static std::unique_ptr<TelemetryManager> g_instance; }; +/// Helper RAII class for collecting telemetry. +class ScopeTelemetryCollector { +public: + ScopeTelemetryCollector() { + if (TelemetryEnabled()) + m_start = std::chrono::steady_clock::now(); + } + + ~ScopeTelemetryCollector() { + while (!m_exit_funcs.empty()) { + (m_exit_funcs.top())(); + m_exit_funcs.pop(); + } + } + + bool TelemetryEnabled() { + TelemetryManager *instance = TelemetryManager::GetInstance(); + return instance != nullptr && instance->GetConfig()->EnableTelemetry; ---------------- oontvoo wrote:
- If telemetry is disabled, the GetInstance() will return nullptr - BUT if GetInstance() returns a valid object, telemetry might still be disabled (at runtime), hence the necessary check. https://github.com/llvm/llvm-project/pull/127696 _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits