https://github.com/JDevlieghere created 
https://github.com/llvm/llvm-project/pull/139397

Make the registration of request handlers a private implementation detail of 
the DAP class.

>From 019d481c18207b3726af24038804c71d3c4f939e Mon Sep 17 00:00:00 2001
From: Jonas Devlieghere <jo...@devlieghere.com>
Date: Sat, 10 May 2025 10:22:43 -0700
Subject: [PATCH] [lldb-dap] Move registration of requests into DAP (NFC)

Make the registration of request handlers a private implementation
detail of the DAP class.
---
 lldb/tools/lldb-dap/DAP.cpp      | 43 +++++++++++++++++++++++++++++
 lldb/tools/lldb-dap/DAP.h        | 15 ++++++-----
 lldb/tools/lldb-dap/lldb-dap.cpp | 46 --------------------------------
 3 files changed, 52 insertions(+), 52 deletions(-)

diff --git a/lldb/tools/lldb-dap/DAP.cpp b/lldb/tools/lldb-dap/DAP.cpp
index 9a3cc32d8c324..4feca1253be20 100644
--- a/lldb/tools/lldb-dap/DAP.cpp
+++ b/lldb/tools/lldb-dap/DAP.cpp
@@ -126,6 +126,7 @@ DAP::DAP(Log *log, const ReplMode default_repl_mode,
           [&](const ProgressEvent &event) { SendJSON(event.ToJSON()); }),
       reverse_request_seq(0), repl_mode(default_repl_mode) {
   configuration.preInitCommands = std::move(pre_init_commands);
+  RegisterRequests();
 }
 
 DAP::~DAP() = default;
@@ -1652,4 +1653,46 @@ void DAP::EventThread() {
   }
 }
 
+void DAP::RegisterRequests() {
+  RegisterRequest<AttachRequestHandler>();
+  RegisterRequest<BreakpointLocationsRequestHandler>();
+  RegisterRequest<CancelRequestHandler>();
+  RegisterRequest<CompletionsRequestHandler>();
+  RegisterRequest<ConfigurationDoneRequestHandler>();
+  RegisterRequest<ContinueRequestHandler>();
+  RegisterRequest<DataBreakpointInfoRequestHandler>();
+  RegisterRequest<DisassembleRequestHandler>();
+  RegisterRequest<DisconnectRequestHandler>();
+  RegisterRequest<EvaluateRequestHandler>();
+  RegisterRequest<ExceptionInfoRequestHandler>();
+  RegisterRequest<InitializeRequestHandler>();
+  RegisterRequest<LaunchRequestHandler>();
+  RegisterRequest<LocationsRequestHandler>();
+  RegisterRequest<NextRequestHandler>();
+  RegisterRequest<PauseRequestHandler>();
+  RegisterRequest<ReadMemoryRequestHandler>();
+  RegisterRequest<RestartRequestHandler>();
+  RegisterRequest<ScopesRequestHandler>();
+  RegisterRequest<SetBreakpointsRequestHandler>();
+  RegisterRequest<SetDataBreakpointsRequestHandler>();
+  RegisterRequest<SetExceptionBreakpointsRequestHandler>();
+  RegisterRequest<SetFunctionBreakpointsRequestHandler>();
+  RegisterRequest<SetInstructionBreakpointsRequestHandler>();
+  RegisterRequest<SetVariableRequestHandler>();
+  RegisterRequest<SourceRequestHandler>();
+  RegisterRequest<StackTraceRequestHandler>();
+  RegisterRequest<StepInRequestHandler>();
+  RegisterRequest<StepInTargetsRequestHandler>();
+  RegisterRequest<StepOutRequestHandler>();
+  RegisterRequest<ThreadsRequestHandler>();
+  RegisterRequest<VariablesRequestHandler>();
+
+  // Custom requests
+  RegisterRequest<CompileUnitsRequestHandler>();
+  RegisterRequest<ModulesRequestHandler>();
+
+  // Testing requests
+  RegisterRequest<TestGetTargetBreakpointsRequestHandler>();
+}
+
 } // namespace lldb_dap
diff --git a/lldb/tools/lldb-dap/DAP.h b/lldb/tools/lldb-dap/DAP.h
index cbda57d27e8d9..c2e4c2dea582e 100644
--- a/lldb/tools/lldb-dap/DAP.h
+++ b/lldb/tools/lldb-dap/DAP.h
@@ -188,7 +188,6 @@ struct DAP {
   // the old process here so we can detect this case and keep running.
   lldb::pid_t restarting_process_id;
   bool configuration_done;
-  llvm::StringMap<std::unique_ptr<BaseRequestHandler>> request_handlers;
   bool waiting_for_run_in_terminal;
   ProgressEventReporter progress_event_reporter;
   // Keep track of the last stop thread index IDs as threads won't go away
@@ -377,11 +376,6 @@ struct DAP {
     });
   }
 
-  /// Registers a request handler.
-  template <typename Handler> void RegisterRequest() {
-    request_handlers[Handler::GetCommand()] = std::make_unique<Handler>(*this);
-  }
-
   /// The set of capablities supported by this adapter.
   protocol::Capabilities GetCapabilities();
 
@@ -429,6 +423,15 @@ struct DAP {
   void StartProgressEventThread();
 
 private:
+  /// Registration of request handler.
+  /// @{
+  void RegisterRequests();
+  template <typename Handler> void RegisterRequest() {
+    request_handlers[Handler::GetCommand()] = std::make_unique<Handler>(*this);
+  }
+  llvm::StringMap<std::unique_ptr<BaseRequestHandler>> request_handlers;
+  /// @}
+
   /// Event threads.
   /// @{
   void EventThread();
diff --git a/lldb/tools/lldb-dap/lldb-dap.cpp b/lldb/tools/lldb-dap/lldb-dap.cpp
index 6e17b13cc9e33..7a4cc70902a56 100644
--- a/lldb/tools/lldb-dap/lldb-dap.cpp
+++ b/lldb/tools/lldb-dap/lldb-dap.cpp
@@ -115,48 +115,6 @@ class LLDBDAPOptTable : public llvm::opt::GenericOptTable {
 };
 } // anonymous namespace
 
-static void RegisterRequestCallbacks(DAP &dap) {
-  dap.RegisterRequest<AttachRequestHandler>();
-  dap.RegisterRequest<BreakpointLocationsRequestHandler>();
-  dap.RegisterRequest<CancelRequestHandler>();
-  dap.RegisterRequest<CompletionsRequestHandler>();
-  dap.RegisterRequest<ConfigurationDoneRequestHandler>();
-  dap.RegisterRequest<ContinueRequestHandler>();
-  dap.RegisterRequest<DataBreakpointInfoRequestHandler>();
-  dap.RegisterRequest<DisassembleRequestHandler>();
-  dap.RegisterRequest<DisconnectRequestHandler>();
-  dap.RegisterRequest<EvaluateRequestHandler>();
-  dap.RegisterRequest<ExceptionInfoRequestHandler>();
-  dap.RegisterRequest<InitializeRequestHandler>();
-  dap.RegisterRequest<LaunchRequestHandler>();
-  dap.RegisterRequest<LocationsRequestHandler>();
-  dap.RegisterRequest<NextRequestHandler>();
-  dap.RegisterRequest<PauseRequestHandler>();
-  dap.RegisterRequest<ReadMemoryRequestHandler>();
-  dap.RegisterRequest<RestartRequestHandler>();
-  dap.RegisterRequest<ScopesRequestHandler>();
-  dap.RegisterRequest<SetBreakpointsRequestHandler>();
-  dap.RegisterRequest<SetDataBreakpointsRequestHandler>();
-  dap.RegisterRequest<SetExceptionBreakpointsRequestHandler>();
-  dap.RegisterRequest<SetFunctionBreakpointsRequestHandler>();
-  dap.RegisterRequest<SetInstructionBreakpointsRequestHandler>();
-  dap.RegisterRequest<SetVariableRequestHandler>();
-  dap.RegisterRequest<SourceRequestHandler>();
-  dap.RegisterRequest<StackTraceRequestHandler>();
-  dap.RegisterRequest<StepInRequestHandler>();
-  dap.RegisterRequest<StepInTargetsRequestHandler>();
-  dap.RegisterRequest<StepOutRequestHandler>();
-  dap.RegisterRequest<ThreadsRequestHandler>();
-  dap.RegisterRequest<VariablesRequestHandler>();
-
-  // Custom requests
-  dap.RegisterRequest<CompileUnitsRequestHandler>();
-  dap.RegisterRequest<ModulesRequestHandler>();
-
-  // Testing requests
-  dap.RegisterRequest<TestGetTargetBreakpointsRequestHandler>();
-}
-
 static void PrintHelp(LLDBDAPOptTable &table, llvm::StringRef tool_name) {
   std::string usage_str = tool_name.str() + " options";
   table.printHelp(llvm::outs(), usage_str.c_str(), "LLDB DAP", false);
@@ -342,8 +300,6 @@ serveConnection(const Socket::SocketProtocol &protocol, 
const std::string &name,
         return;
       }
 
-      RegisterRequestCallbacks(dap);
-
       {
         std::scoped_lock<std::mutex> lock(dap_sessions_mutex);
         dap_sessions[io.get()] = &dap;
@@ -597,8 +553,6 @@ int main(int argc, char *argv[]) {
     return EXIT_FAILURE;
   }
 
-  RegisterRequestCallbacks(dap);
-
   // used only by TestVSCode_redirection_to_console.py
   if (getenv("LLDB_DAP_TEST_STDOUT_STDERR_REDIRECTION") != nullptr)
     redirection_test();

_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to