Skip to content

Commit 79c33d5

Browse files
JDevlieghereSquallATF
authored andcommitted
[lldb-dap] Finish refactoring the request handlers (NFC) (llvm#128553)
Completes the work started in llvm#128262. This PR removes the old way of register request handlers with callbacks and makes the operator const.
1 parent 0c0be23 commit 79c33d5

39 files changed

+98
-112
lines changed

lldb/tools/lldb-dap/DAP.cpp

Lines changed: 2 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -755,20 +755,12 @@ bool DAP::HandleObject(const llvm::json::Object &object) {
755755
if (packet_type == "request") {
756756
const auto command = GetString(object, "command");
757757

758-
// Try the new request handler first.
759-
auto new_handler_pos = new_request_handlers.find(command);
760-
if (new_handler_pos != new_request_handlers.end()) {
758+
auto new_handler_pos = request_handlers.find(command);
759+
if (new_handler_pos != request_handlers.end()) {
761760
(*new_handler_pos->second)(object);
762761
return true; // Success
763762
}
764763

765-
// FIXME: Remove request_handlers once everything has been migrated.
766-
auto handler_pos = request_handlers.find(command);
767-
if (handler_pos != request_handlers.end()) {
768-
handler_pos->second(*this, object);
769-
return true; // Success
770-
}
771-
772764
if (log)
773765
*log << "error: unhandled command \"" << command.data() << "\""
774766
<< std::endl;
@@ -901,11 +893,6 @@ void DAP::SendReverseRequest(llvm::StringRef command,
901893
});
902894
}
903895

904-
void DAP::RegisterRequestCallback(std::string request,
905-
RequestCallback callback) {
906-
request_handlers[request] = callback;
907-
}
908-
909896
lldb::SBError DAP::WaitForProcessToStop(uint32_t seconds) {
910897
lldb::SBError error;
911898
lldb::SBProcess process = target.GetProcess();

lldb/tools/lldb-dap/DAP.h

Lines changed: 2 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,6 @@ enum DAPBroadcasterBits {
6868
eBroadcastBitStopProgressThread = 1u << 1
6969
};
7070

71-
typedef void (*RequestCallback)(DAP &dap, const llvm::json::Object &command);
7271
typedef void (*ResponseCallback)(llvm::Expected<llvm::json::Value> value);
7372

7473
enum class PacketStatus {
@@ -190,8 +189,7 @@ struct DAP {
190189
// the old process here so we can detect this case and keep running.
191190
lldb::pid_t restarting_process_id;
192191
bool configuration_done_sent;
193-
std::map<std::string, RequestCallback, std::less<>> request_handlers;
194-
llvm::StringMap<std::unique_ptr<RequestHandler>> new_request_handlers;
192+
llvm::StringMap<std::unique_ptr<RequestHandler>> request_handlers;
195193
bool waiting_for_run_in_terminal;
196194
ProgressEventReporter progress_event_reporter;
197195
// Keep track of the last stop thread index IDs as threads won't go away
@@ -309,8 +307,6 @@ struct DAP {
309307
/// listeing for its breakpoint events.
310308
void SetTarget(const lldb::SBTarget target);
311309

312-
const std::map<std::string, RequestCallback> &GetRequestHandlers();
313-
314310
PacketStatus GetNextObject(llvm::json::Object &object);
315311
bool HandleObject(const llvm::json::Object &object);
316312

@@ -338,21 +334,9 @@ struct DAP {
338334
void SendReverseRequest(llvm::StringRef command, llvm::json::Value arguments,
339335
ResponseCallback callback);
340336

341-
/// Registers a callback handler for a Debug Adapter Protocol request
342-
///
343-
/// \param[in] request
344-
/// The name of the request following the Debug Adapter Protocol
345-
/// specification.
346-
///
347-
/// \param[in] callback
348-
/// The callback to execute when the given request is triggered by the
349-
/// IDE.
350-
void RegisterRequestCallback(std::string request, RequestCallback callback);
351-
352337
/// Registers a request handler.
353338
template <typename Handler> void RegisterRequest() {
354-
new_request_handlers[Handler::getCommand()] =
355-
std::make_unique<Handler>(*this);
339+
request_handlers[Handler::getCommand()] = std::make_unique<Handler>(*this);
356340
}
357341

358342
/// Debuggee will continue from stopped state.

lldb/tools/lldb-dap/Handler/AttachRequestHandler.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ namespace lldb_dap {
4444
// }]
4545
// }
4646

47-
void AttachRequestHandler::operator()(const llvm::json::Object &request) {
47+
void AttachRequestHandler::operator()(const llvm::json::Object &request) const {
4848
dap.is_attach = true;
4949
dap.last_launch_or_attach_request = request;
5050
llvm::json::Object response;

lldb/tools/lldb-dap/Handler/BreakpointLocationsHandler.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,7 @@ namespace lldb_dap {
125125
// "required": [ "line" ]
126126
// },
127127
void BreakpointLocationsRequestHandler::operator()(
128-
const llvm::json::Object &request) {
128+
const llvm::json::Object &request) const {
129129
llvm::json::Object response;
130130
FillResponse(request, response);
131131
auto *arguments = request.getObject("arguments");

lldb/tools/lldb-dap/Handler/CompileUnitsRequestHandler.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,8 @@ namespace lldb_dap {
5353
// }
5454
// }]
5555
// }
56-
void CompileUnitsRequestHandler::operator()(const llvm::json::Object &request) {
56+
void CompileUnitsRequestHandler::operator()(
57+
const llvm::json::Object &request) const {
5758
llvm::json::Object response;
5859
FillResponse(request, response);
5960
llvm::json::Object body;

lldb/tools/lldb-dap/Handler/CompletionsHandler.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,8 @@ namespace lldb_dap {
128128
// "interface", "module", "property", "unit", "value", "enum", "keyword",
129129
// "snippet", "text", "color", "file", "reference", "customcolor" ]
130130
// }
131-
void CompletionsRequestHandler::operator()(const llvm::json::Object &request) {
131+
void CompletionsRequestHandler::operator()(
132+
const llvm::json::Object &request) const {
132133
llvm::json::Object response;
133134
FillResponse(request, response);
134135
llvm::json::Object body;

lldb/tools/lldb-dap/Handler/ConfigurationDoneRequestHandler.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ namespace lldb_dap {
4545
// }]
4646
// },
4747
void ConfigurationDoneRequestHandler::operator()(
48-
const llvm::json::Object &request) {
48+
const llvm::json::Object &request) const {
4949
llvm::json::Object response;
5050
FillResponse(request, response);
5151
dap.SendJSON(llvm::json::Value(std::move(response)));

lldb/tools/lldb-dap/Handler/ContinueRequestHandler.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,8 @@ namespace lldb_dap {
6666
// "required": [ "body" ]
6767
// }]
6868
// }
69-
void ContinueRequestHandler::operator()(const llvm::json::Object &request) {
69+
void ContinueRequestHandler::operator()(
70+
const llvm::json::Object &request) const {
7071
llvm::json::Object response;
7172
FillResponse(request, response);
7273
lldb::SBProcess process = dap.target.GetProcess();

lldb/tools/lldb-dap/Handler/DataBreakpointInfoRequestHandler.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,7 @@ namespace lldb_dap {
108108
// }]
109109
// }
110110
void DataBreakpointInfoRequestHandler::operator()(
111-
const llvm::json::Object &request) {
111+
const llvm::json::Object &request) const {
112112
llvm::json::Object response;
113113
FillResponse(request, response);
114114
llvm::json::Object body;

lldb/tools/lldb-dap/Handler/DisassembleRequestHandler.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,8 @@ namespace lldb_dap {
8787
// }
8888
// }]
8989
// }
90-
void DisassembleRequestHandler::operator()(const llvm::json::Object &request) {
90+
void DisassembleRequestHandler::operator()(
91+
const llvm::json::Object &request) const {
9192
llvm::json::Object response;
9293
FillResponse(request, response);
9394
auto *arguments = request.getObject("arguments");

lldb/tools/lldb-dap/Handler/DisconnectRequestHandler.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,8 @@ namespace lldb_dap {
5757
// acknowledgement, so no body field is required."
5858
// }]
5959
// }
60-
void DisconnectRequestHandler::operator()(const llvm::json::Object &request) {
60+
void DisconnectRequestHandler::operator()(
61+
const llvm::json::Object &request) const {
6162
llvm::json::Object response;
6263
FillResponse(request, response);
6364
const auto *arguments = request.getObject("arguments");

lldb/tools/lldb-dap/Handler/EvaluateRequestHandler.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -138,7 +138,8 @@ namespace lldb_dap {
138138
// "required": [ "body" ]
139139
// }]
140140
// }
141-
void EvaluateRequestHandler::operator()(const llvm::json::Object &request) {
141+
void EvaluateRequestHandler::operator()(
142+
const llvm::json::Object &request) const {
142143
llvm::json::Object response;
143144
FillResponse(request, response);
144145
llvm::json::Object body;

lldb/tools/lldb-dap/Handler/ExceptionInfoRequestHandler.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,7 @@ namespace lldb_dap {
112112
// }
113113
// },
114114
void ExceptionInfoRequestHandler::operator()(
115-
const llvm::json::Object &request) {
115+
const llvm::json::Object &request) const {
116116
llvm::json::Object response;
117117
FillResponse(request, response);
118118
const auto *arguments = request.getObject("arguments");

lldb/tools/lldb-dap/Handler/InitializeRequestHandler.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -246,7 +246,8 @@ static void EventThreadFunction(DAP &dap) {
246246
// }
247247
// }]
248248
// }
249-
void InitializeRequestHandler::operator()(const llvm::json::Object &request) {
249+
void InitializeRequestHandler::operator()(
250+
const llvm::json::Object &request) const {
250251
llvm::json::Object response;
251252
FillResponse(request, response);
252253
llvm::json::Object body;

lldb/tools/lldb-dap/Handler/LaunchRequestHandler.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ namespace lldb_dap {
4848
// acknowledgement, so no body field is required."
4949
// }]
5050
// }
51-
void LaunchRequestHandler::operator()(const llvm::json::Object &request) {
51+
void LaunchRequestHandler::operator()(const llvm::json::Object &request) const {
5252
dap.is_attach = false;
5353
dap.last_launch_or_attach_request = request;
5454
llvm::json::Object response;

lldb/tools/lldb-dap/Handler/LocationsRequestHandler.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,8 @@ namespace lldb_dap {
9191
// }
9292
// }]
9393
// },
94-
void LocationsRequestHandler::operator()(const llvm::json::Object &request) {
94+
void LocationsRequestHandler::operator()(
95+
const llvm::json::Object &request) const {
9596
llvm::json::Object response;
9697
FillResponse(request, response);
9798
auto *arguments = request.getObject("arguments");

lldb/tools/lldb-dap/Handler/ModulesRequestHandler.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,8 @@ namespace lldb_dap {
3939
// }
4040
// }]
4141
// }
42-
void ModulesRequestHandler::operator()(const llvm::json::Object &request) {
42+
void ModulesRequestHandler::operator()(
43+
const llvm::json::Object &request) const {
4344
llvm::json::Object response;
4445
FillResponse(request, response);
4546

lldb/tools/lldb-dap/Handler/NextRequestHandler.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ namespace lldb_dap {
5656
// acknowledgement, so no body field is required."
5757
// }]
5858
// }
59-
void NextRequestHandler::operator()(const llvm::json::Object &request) {
59+
void NextRequestHandler::operator()(const llvm::json::Object &request) const {
6060
llvm::json::Object response;
6161
FillResponse(request, response);
6262
const auto *arguments = request.getObject("arguments");

lldb/tools/lldb-dap/Handler/PauseRequestHandler.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ namespace lldb_dap {
4949
// acknowledgement, so no body field is required."
5050
// }]
5151
// }
52-
void PauseRequestHandler::operator()(const llvm::json::Object &request) {
52+
void PauseRequestHandler::operator()(const llvm::json::Object &request) const {
5353
llvm::json::Object response;
5454
FillResponse(request, response);
5555
lldb::SBProcess process = dap.target.GetProcess();

lldb/tools/lldb-dap/Handler/ReadMemoryRequestHandler.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,8 @@ namespace lldb_dap {
9292
// }
9393
// }]
9494
// },
95-
void ReadMemoryRequestHandler::operator()(const llvm::json::Object &request) {
95+
void ReadMemoryRequestHandler::operator()(
96+
const llvm::json::Object &request) const {
9697
llvm::json::Object response;
9798
FillResponse(request, response);
9899
auto *arguments = request.getObject("arguments");

lldb/tools/lldb-dap/Handler/RequestHandler.cpp

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ MakeArgv(const llvm::ArrayRef<std::string> &strs) {
3434
// Both attach and launch take a either a sourcePath or sourceMap
3535
// argument (or neither), from which we need to set the target.source-map.
3636
void RequestHandler::SetSourceMapFromArguments(
37-
const llvm::json::Object &arguments) {
37+
const llvm::json::Object &arguments) const {
3838
const char *sourceMapHelp =
3939
"source must be be an array of two-element arrays, "
4040
"each containing a source and replacement path string.\n";
@@ -153,7 +153,8 @@ static llvm::Error RunInTerminal(DAP &dap,
153153
error.GetCString());
154154
}
155155

156-
lldb::SBError RequestHandler::LaunchProcess(const llvm::json::Object &request) {
156+
lldb::SBError
157+
RequestHandler::LaunchProcess(const llvm::json::Object &request) const {
157158
lldb::SBError error;
158159
const auto *arguments = request.getObject("arguments");
159160
auto launchCommands = GetStrings(arguments, "launchCommands");
@@ -219,14 +220,14 @@ lldb::SBError RequestHandler::LaunchProcess(const llvm::json::Object &request) {
219220
return error;
220221
}
221222

222-
void RequestHandler::PrintWelcomeMessage() {
223+
void RequestHandler::PrintWelcomeMessage() const {
223224
#ifdef LLDB_DAP_WELCOME_MESSAGE
224225
dap.SendOutput(OutputType::Console, LLDB_DAP_WELCOME_MESSAGE);
225226
#endif
226227
}
227228

228229
bool RequestHandler::HasInstructionGranularity(
229-
const llvm::json::Object &arguments) {
230+
const llvm::json::Object &arguments) const {
230231
if (std::optional<llvm::StringRef> value = arguments.getString("granularity"))
231232
return value == "instruction";
232233
return false;

0 commit comments

Comments
 (0)