LLDB
mainline
llvm-project
lldb
source
Plugins
Protocol
MCP
ProtocolServerMCP.h
Go to the documentation of this file.
1
//===- ProtocolServerMCP.h ------------------------------------------------===//
2
//
3
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4
// See https://llvm.org/LICENSE.txt for license information.
5
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6
//
7
//===----------------------------------------------------------------------===//
8
9
#ifndef LLDB_PLUGINS_PROTOCOL_MCP_PROTOCOLSERVERMCP_H
10
#define LLDB_PLUGINS_PROTOCOL_MCP_PROTOCOLSERVERMCP_H
11
12
#include "
lldb/Core/ProtocolServer.h
"
13
#include "
lldb/Host/MainLoop.h
"
14
#include "
lldb/Host/Socket.h
"
15
#include "
lldb/Protocol/MCP/Server.h
"
16
#include "
lldb/Protocol/MCP/Transport.h
"
17
#include <map>
18
#include <memory>
19
#include <thread>
20
#include <tuple>
21
#include <vector>
22
23
namespace
lldb_private::mcp
{
24
25
class
ProtocolServerMCP
:
public
ProtocolServer
{
26
27
using
ServerUP
= std::unique_ptr<lldb_protocol::mcp::Server>;
28
29
using
ReadHandleUP
=
MainLoop::ReadHandleUP
;
30
31
public
:
32
ProtocolServerMCP
();
33
~ProtocolServerMCP
()
override
;
34
35
llvm::Error
Start
(
ProtocolServer::Connection
connection)
override
;
36
llvm::Error
Stop
()
override
;
37
38
static
void
Initialize
();
39
static
void
Terminate
();
40
41
static
llvm::StringRef
GetPluginNameStatic
() {
return
"MCP"
; }
42
static
llvm::StringRef
GetPluginDescriptionStatic
();
43
44
static
lldb::ProtocolServerUP
CreateInstance
();
45
46
llvm::StringRef
GetPluginName
()
override
{
return
GetPluginNameStatic
(); }
47
48
Socket
*
GetSocket
()
const override
{
return
m_listener
.get(); }
49
50
protected
:
51
// This adds tools and resource providers that
52
// are specific to this server. Overridable by the unit tests.
53
virtual
void
Extend
(
lldb_protocol::mcp::Server
&server)
const
;
54
55
private
:
56
void
AcceptCallback
(std::unique_ptr<Socket> socket);
57
58
bool
m_running
=
false
;
59
60
lldb_private::MainLoop
m_loop
;
61
std::thread
m_loop_thread
;
62
std::mutex
m_mutex
;
63
size_t
m_client_count
= 0;
64
65
std::unique_ptr<Socket>
m_listener
;
66
std::vector<ReadHandleUP>
m_accept_handles
;
67
68
ServerUP
m_server
;
69
lldb_protocol::mcp::ServerInfoHandle
m_server_info_handle
;
70
};
71
72
}
// namespace lldb_private::mcp
73
74
#endif
MainLoop.h
ProtocolServer.h
Server.h
Socket.h
Transport.h
lldb_private::MainLoopBase::ReadHandleUP
std::unique_ptr< ReadHandle > ReadHandleUP
Definition
MainLoopBase.h:49
lldb_private::ProtocolServer::ProtocolServer
ProtocolServer()=default
lldb_private::Socket
Definition
Socket.h:68
lldb_private::mcp::ProtocolServerMCP::m_server
ServerUP m_server
Definition
ProtocolServerMCP.h:68
lldb_private::mcp::ProtocolServerMCP::m_listener
std::unique_ptr< Socket > m_listener
Definition
ProtocolServerMCP.h:65
lldb_private::mcp::ProtocolServerMCP::Extend
virtual void Extend(lldb_protocol::mcp::Server &server) const
Definition
ProtocolServerMCP.cpp:54
lldb_private::mcp::ProtocolServerMCP::m_loop_thread
std::thread m_loop_thread
Definition
ProtocolServerMCP.h:61
lldb_private::mcp::ProtocolServerMCP::ProtocolServerMCP
ProtocolServerMCP()
Definition
ProtocolServerMCP.cpp:31
lldb_private::mcp::ProtocolServerMCP::Start
llvm::Error Start(ProtocolServer::Connection connection) override
Definition
ProtocolServerMCP.cpp:77
lldb_private::mcp::ProtocolServerMCP::m_running
bool m_running
Definition
ProtocolServerMCP.h:58
lldb_private::mcp::ProtocolServerMCP::GetSocket
Socket * GetSocket() const override
Definition
ProtocolServerMCP.h:48
lldb_private::mcp::ProtocolServerMCP::ServerUP
std::unique_ptr< lldb_protocol::mcp::Server > ServerUP
Definition
ProtocolServerMCP.h:27
lldb_private::mcp::ProtocolServerMCP::Terminate
static void Terminate()
Definition
ProtocolServerMCP.cpp:40
lldb_private::mcp::ProtocolServerMCP::ReadHandleUP
MainLoop::ReadHandleUP ReadHandleUP
Definition
ProtocolServerMCP.h:29
lldb_private::mcp::ProtocolServerMCP::m_accept_handles
std::vector< ReadHandleUP > m_accept_handles
Definition
ProtocolServerMCP.h:66
lldb_private::mcp::ProtocolServerMCP::CreateInstance
static lldb::ProtocolServerUP CreateInstance()
Definition
ProtocolServerMCP.cpp:46
lldb_private::mcp::ProtocolServerMCP::Stop
llvm::Error Stop() override
Definition
ProtocolServerMCP.cpp:127
lldb_private::mcp::ProtocolServerMCP::m_client_count
size_t m_client_count
Definition
ProtocolServerMCP.h:63
lldb_private::mcp::ProtocolServerMCP::GetPluginName
llvm::StringRef GetPluginName() override
Definition
ProtocolServerMCP.h:46
lldb_private::mcp::ProtocolServerMCP::AcceptCallback
void AcceptCallback(std::unique_ptr< Socket > socket)
Definition
ProtocolServerMCP.cpp:62
lldb_private::mcp::ProtocolServerMCP::GetPluginNameStatic
static llvm::StringRef GetPluginNameStatic()
Definition
ProtocolServerMCP.h:41
lldb_private::mcp::ProtocolServerMCP::m_server_info_handle
lldb_protocol::mcp::ServerInfoHandle m_server_info_handle
Definition
ProtocolServerMCP.h:69
lldb_private::mcp::ProtocolServerMCP::GetPluginDescriptionStatic
static llvm::StringRef GetPluginDescriptionStatic()
Definition
ProtocolServerMCP.cpp:50
lldb_private::mcp::ProtocolServerMCP::~ProtocolServerMCP
~ProtocolServerMCP() override
Definition
ProtocolServerMCP.cpp:33
lldb_private::mcp::ProtocolServerMCP::Initialize
static void Initialize()
Definition
ProtocolServerMCP.cpp:35
lldb_private::mcp::ProtocolServerMCP::m_mutex
std::mutex m_mutex
Definition
ProtocolServerMCP.h:62
lldb_private::mcp::ProtocolServerMCP::m_loop
lldb_private::MainLoop m_loop
Definition
ProtocolServerMCP.h:60
lldb_protocol::mcp::ServerInfoHandle
A handle that tracks the server info on disk and cleans up the disk record once it is no longer refer...
Definition
Server.h:100
lldb_protocol::mcp::Server
Definition
Server.h:30
lldb_private::mcp
Definition
ProtocolServerMCP.h:23
lldb_private::MainLoop
MainLoopPosix MainLoop
Definition
MainLoop.h:20
lldb::ProtocolServerUP
std::unique_ptr< lldb_private::ProtocolServer > ProtocolServerUP
Definition
lldb-forward.h:396
lldb_private::ProtocolServer::Connection
Definition
ProtocolServer.h:29
Generated on
for LLDB by
1.14.0