================
@@ -59,11 +60,21 @@ struct LLDBBaseTelemetryInfo : public 
llvm::telemetry::TelemetryInfo {
 /// The base Telemetry manager instance in LLDB
 /// This class declares additional instrumentation points
 /// applicable to LLDB.
-class TelemetryManager : public llvm::telemetry::Manager {
+class TelemetryManager : public llvm::telemetry::Manager,
+                         public PluginInterface {
 public:
+  llvm::Error preDispatch(llvm::telemetry::TelemetryInfo *entry) override;
+
+  // Plugin interface
+  llvm::StringRef GetPluginName() override { return "TelemetryManager"; }
+
+  static TelemetryManager *getInstance();
+
+protected:
   TelemetryManager(std::unique_ptr<llvm::telemetry::Config> config);
 
-  llvm::Error preDispatch(llvm::telemetry::TelemetryInfo *entry) override;
+  static std::unique_ptr<TelemetryManager> g_instance;
----------------
labath wrote:

This one ought to be private since subclasses should go through `setInstance`. 
We could also delete the setter and have subclasses set the member directly, 
but I sort of like the setter approach more.

https://github.com/llvm/llvm-project/pull/126588
_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to