Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
43 changes: 43 additions & 0 deletions lldb/tools/lldb-dap/DAP.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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
15 changes: 9 additions & 6 deletions lldb/tools/lldb-dap/DAP.h
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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();

Expand Down Expand Up @@ -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();
Expand Down
46 changes: 0 additions & 46 deletions lldb/tools/lldb-dap/lldb-dap.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down Expand Up @@ -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;
Expand Down Expand Up @@ -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();
Expand Down
Loading