-
Notifications
You must be signed in to change notification settings - Fork 15.4k
[lldb-dap] Move registration of requests into DAP (NFC) #139397
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
JDevlieghere
merged 1 commit into
llvm:main
from
JDevlieghere:lldb-dap-request-registration
May 10, 2025
Merged
[lldb-dap] Move registration of requests into DAP (NFC) #139397
JDevlieghere
merged 1 commit into
llvm:main
from
JDevlieghere:lldb-dap-request-registration
May 10, 2025
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Make the registration of request handlers a private implementation detail of the DAP class.
Member
|
@llvm/pr-subscribers-lldb Author: Jonas Devlieghere (JDevlieghere) ChangesMake the registration of request handlers a private implementation detail of the DAP class. Full diff: https://github.com/llvm/llvm-project/pull/139397.diff 3 Files Affected:
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();
|
eronnen
approved these changes
May 10, 2025
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Make the registration of request handlers a private implementation detail of the DAP class.