================
@@ -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
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits