71 lines
2.0 KiB
C++
71 lines
2.0 KiB
C++
//===-- ModulesRequestHandler.cpp -----------------------------------------===//
|
|
//
|
|
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
|
// See https://llvm.org/LICENSE.txt for license information.
|
|
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#include "DAP.h"
|
|
#include "EventHelper.h"
|
|
#include "JSONUtils.h"
|
|
#include "RequestHandler.h"
|
|
|
|
namespace lldb_dap {
|
|
|
|
// "modulesRequest": {
|
|
// "allOf": [ { "$ref": "#/definitions/Request" }, {
|
|
// "type": "object",
|
|
// "description": "Modules request; value of command field is
|
|
// 'modules'.",
|
|
// "properties": {
|
|
// "command": {
|
|
// "type": "string",
|
|
// "enum": [ "modules" ]
|
|
// },
|
|
// },
|
|
// "required": [ "command" ]
|
|
// }]
|
|
// },
|
|
// "modulesResponse": {
|
|
// "allOf": [ { "$ref": "#/definitions/Response" }, {
|
|
// "type": "object",
|
|
// "description": "Response to 'modules' request.",
|
|
// "properties": {
|
|
// "body": {
|
|
// "description": "Response to 'modules' request. Array of
|
|
// module objects."
|
|
// }
|
|
// }
|
|
// }]
|
|
// }
|
|
void ModulesRequestHandler::operator()(
|
|
const llvm::json::Object &request) const {
|
|
llvm::json::Object response;
|
|
FillResponse(request, response);
|
|
|
|
llvm::json::Array modules;
|
|
|
|
{
|
|
std::lock_guard<std::mutex> guard(dap.modules_mutex);
|
|
for (size_t i = 0; i < dap.target.GetNumModules(); i++) {
|
|
lldb::SBModule module = dap.target.GetModuleAtIndex(i);
|
|
if (!module.IsValid())
|
|
continue;
|
|
|
|
llvm::StringRef module_id = module.GetUUIDString();
|
|
if (!module_id.empty())
|
|
dap.modules.insert(module_id);
|
|
|
|
modules.emplace_back(CreateModule(dap.target, module));
|
|
}
|
|
}
|
|
|
|
llvm::json::Object body;
|
|
body.try_emplace("modules", std::move(modules));
|
|
response.try_emplace("body", std::move(body));
|
|
dap.SendJSON(llvm::json::Value(std::move(response)));
|
|
}
|
|
|
|
} // namespace lldb_dap
|