================
@@ -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

Reply via email to