================ @@ -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:
In the original RFC, we proposed a way to toggle OFF/ON Telemetry (eg., via some simple command) The idea is, the vendor can enable Telemetry at BUILD time. Then users can temporarily turn it off, then back on again. (It's probably already obviously but should be pointed out that the users can only turn OFF telemetry then ON again if Telemetry was already enabled to begin with.) 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