10#include "llvm/ADT/StringRef.h"
18 : JSONRPCTransport(loop, in, out),
m_log_callback(std::move(log_callback)) {
28 llvm::Expected<json::Value> value = json::parse(raw_message);
31 consumeError(value.takeError());
32 return llvm::Error::success();
35 const json::Object *
object = value->getAsObject();
37 return llvm::Error::success();
40 const json::Value *raw_id =
object->get(
"id");
42 return llvm::Error::success();
45 if (std::optional<StringRef> str = raw_id->getAsString())
47 else if (std::optional<int64_t> num = raw_id->getAsInteger())
50 return llvm::Error::success();
llvm::Error Send(const typename ProtocolDescriptor::Evt &evt) override
void Log(llvm::StringRef message) override
LogCallback m_log_callback
llvm::Error ReplyWithParseError(llvm::StringRef raw_message, llvm::StringRef reason) override
Sends an error response for a message that failed to parse, described by reason.
Transport(lldb_private::MainLoop &loop, lldb::IOObjectSP in, lldb::IOObjectSP out, LogCallback log_callback={})
std::variant< int64_t, std::string > Id
A Request or Response 'id'.
@ eErrorCodeInvalidRequest
The JSON sent is not a valid Request object.
llvm::unique_function< void(llvm::StringRef message)> LogCallback
Generic logging callback, to allow the MCP server / client / transport layer to be independent of the...
std::shared_ptr< lldb_private::IOObject > IOObjectSP
A response to a request, either an error or a result.