LLDB mainline
|
#include <Server.h>
Public Types | |
using | NotificationHandler = std::function< void(const Notification &)> |
Public Member Functions | |
Server (std::string name, std::string version, std::unique_ptr< MCPTransport > transport_up, lldb_private::MainLoop &loop) | |
~Server ()=default | |
void | AddTool (std::unique_ptr< Tool > tool) |
void | AddResourceProvider (std::unique_ptr< ResourceProvider > resource_provider) |
void | AddNotificationHandler (llvm::StringRef method, NotificationHandler handler) |
llvm::Error | Run () |
![]() | |
virtual | ~MessageHandler ()=default |
virtual void | Received (const Evt &)=0 |
Called when an event is received. | |
virtual void | Received (const Req &)=0 |
Called when a request is received. | |
virtual void | Received (const Resp &)=0 |
Called when a response is received. | |
virtual void | OnError (llvm::Error)=0 |
Called when an error occurs while reading from the transport. | |
virtual void | OnClosed ()=0 |
Called on EOF or client disconnect. | |
Protected Types | |
using | RequestHandler = std::function< llvm::Expected< Response >(const Request &)> |
Protected Member Functions | |
ServerCapabilities | GetCapabilities () |
void | AddRequestHandlers () |
void | AddRequestHandler (llvm::StringRef method, RequestHandler handler) |
llvm::Expected< std::optional< Message > > | HandleData (llvm::StringRef data) |
llvm::Expected< Response > | Handle (const Request &request) |
void | Handle (const Notification ¬ification) |
llvm::Expected< Response > | InitializeHandler (const Request &) |
llvm::Expected< Response > | ToolsListHandler (const Request &) |
llvm::Expected< Response > | ToolsCallHandler (const Request &) |
llvm::Expected< Response > | ResourcesListHandler (const Request &) |
llvm::Expected< Response > | ResourcesReadHandler (const Request &) |
void | Received (const Request &) override |
void | Received (const Response &) override |
void | Received (const Notification &) override |
void | OnError (llvm::Error) override |
Called when an error occurs while reading from the transport. | |
void | OnClosed () override |
Called on EOF or client disconnect. | |
void | TerminateLoop () |
Private Attributes | |
const std::string | m_name |
const std::string | m_version |
std::unique_ptr< MCPTransport > | m_transport_up |
lldb_private::MainLoop & | m_loop |
llvm::StringMap< std::unique_ptr< Tool > > | m_tools |
std::vector< std::unique_ptr< ResourceProvider > > | m_resource_providers |
llvm::StringMap< RequestHandler > | m_request_handlers |
llvm::StringMap< NotificationHandler > | m_notification_handlers |
using lldb_protocol::mcp::Server::NotificationHandler = std::function<void(const Notification &)> |
|
protected |
Server::Server | ( | std::string | name, |
std::string | version, | ||
std::unique_ptr< MCPTransport > | transport_up, | ||
lldb_private::MainLoop & | loop | ||
) |
Definition at line 29 of file Server.cpp.
References AddRequestHandlers().
|
default |
void Server::AddNotificationHandler | ( | llvm::StringRef | method, |
NotificationHandler | handler | ||
) |
Definition at line 89 of file Server.cpp.
References m_notification_handlers.
Referenced by lldb_private::mcp::ProtocolServerMCP::Extend().
|
protected |
Definition at line 85 of file Server.cpp.
References m_request_handlers.
Referenced by AddRequestHandlers().
|
protected |
Definition at line 37 of file Server.cpp.
References AddRequestHandler(), InitializeHandler(), ResourcesListHandler(), ResourcesReadHandler(), ToolsCallHandler(), and ToolsListHandler().
Referenced by Server().
void Server::AddResourceProvider | ( | std::unique_ptr< ResourceProvider > | resource_provider | ) |
Definition at line 78 of file Server.cpp.
References m_resource_providers.
Referenced by lldb_private::mcp::ProtocolServerMCP::Extend().
void Server::AddTool | ( | std::unique_ptr< Tool > | tool | ) |
Definition at line 72 of file Server.cpp.
References m_tools.
Referenced by lldb_private::mcp::ProtocolServerMCP::Extend().
|
protected |
Definition at line 198 of file Server.cpp.
References lldb_protocol::mcp::ServerCapabilities::supportsResourcesList, and lldb_protocol::mcp::ServerCapabilities::supportsToolsList.
Referenced by InitializeHandler().
|
protected |
Definition at line 64 of file Server.cpp.
References m_notification_handlers, and lldb_protocol::mcp::Notification::method.
Definition at line 50 of file Server.cpp.
References lldb_protocol::mcp::Request::id, m_request_handlers, and lldb_protocol::mcp::Request::method.
Referenced by Received().
|
protected |
Definition at line 94 of file Server.cpp.
References lldb_protocol::mcp::InitializeResult::capabilities, GetCapabilities(), lldb_protocol::mcp::kProtocolVersion, m_name, m_version, lldb_protocol::mcp::Implementation::name, lldb_protocol::mcp::InitializeResult::protocolVersion, lldb_protocol::mcp::Response::result, lldb_protocol::mcp::InitializeResult::serverInfo, and lldb_protocol::mcp::Implementation::version.
Referenced by AddRequestHandlers().
|
overrideprotectedvirtual |
Called on EOF or client disconnect.
Implements lldb_private::Transport< Req, Resp, Evt >::MessageHandler.
Definition at line 256 of file Server.cpp.
References m_transport_up, and TerminateLoop().
|
overrideprotectedvirtual |
Called when an error occurs while reading from the transport.
NOTE: This does NOT indicate that a specific request failed, but that there was an error in the underlying transport.
Implements lldb_private::Transport< Req, Resp, Evt >::MessageHandler.
Definition at line 251 of file Server.cpp.
References error(), m_transport_up, and TerminateLoop().
|
overrideprotected |
Definition at line 247 of file Server.cpp.
References Handle().
|
overrideprotected |
Definition at line 219 of file Server.cpp.
References error(), Handle(), lldb_protocol::mcp::Request::id, lldb_protocol::mcp::Response::id, m_transport_up, and lldb_protocol::mcp::Response::result.
|
overrideprotected |
Definition at line 243 of file Server.cpp.
References m_transport_up.
Definition at line 148 of file Server.cpp.
References m_resource_providers, lldb_protocol::mcp::ListResourcesResult::resources, and lldb_protocol::mcp::Response::result.
Referenced by AddRequestHandlers().
Definition at line 162 of file Server.cpp.
References lldb_protocol::mcp::fromJSON(), lldb_protocol::mcp::MCPError::kResourceNotFound, m_resource_providers, lldb_protocol::mcp::Request::params, lldb_protocol::mcp::Response::result, and lldb_protocol::mcp::ReadResourceParams::uri.
Referenced by AddRequestHandlers().
llvm::Error Server::Run | ( | ) |
Definition at line 207 of file Server.cpp.
References lldb_private::Status::Fail(), m_loop, m_transport_up, lldb_private::MainLoopPosix::Run(), and lldb_private::Status::takeError().
|
protected |
Definition at line 261 of file Server.cpp.
References lldb_private::MainLoopBase::AddPendingCallback(), m_loop, and lldb_private::MainLoopBase::RequestTermination().
Referenced by OnClosed(), and OnError().
Definition at line 117 of file Server.cpp.
References lldb_protocol::mcp::CallToolParams::arguments, lldb_protocol::mcp::fromJSON(), m_tools, lldb_protocol::mcp::CallToolParams::name, lldb_protocol::mcp::Request::params, lldb_protocol::mcp::Response::result, and lldb_protocol::mcp::toJSON().
Referenced by AddRequestHandlers().
Definition at line 105 of file Server.cpp.
References m_tools, lldb_protocol::mcp::Response::result, and lldb_protocol::mcp::ListToolsResult::tools.
Referenced by AddRequestHandlers().
|
private |
Definition at line 105 of file Server.h.
Referenced by Run(), and TerminateLoop().
|
private |
Definition at line 101 of file Server.h.
Referenced by InitializeHandler().
|
private |
Definition at line 111 of file Server.h.
Referenced by AddNotificationHandler(), and Handle().
|
private |
Definition at line 110 of file Server.h.
Referenced by AddRequestHandler(), and Handle().
|
private |
Definition at line 108 of file Server.h.
Referenced by AddResourceProvider(), ResourcesListHandler(), and ResourcesReadHandler().
|
private |
Definition at line 107 of file Server.h.
Referenced by AddTool(), ToolsCallHandler(), and ToolsListHandler().
|
private |
Definition at line 104 of file Server.h.
Referenced by OnClosed(), OnError(), Received(), and Run().
|
private |
Definition at line 102 of file Server.h.
Referenced by InitializeHandler().