@@ -24,20 +24,6 @@ using namespace lldb_private;
2424#define LLDB_OPTIONS_mcp
2525#include " CommandOptions.inc"
2626
27- static std::vector<llvm::StringRef> GetSupportedProtocols () {
28- std::vector<llvm::StringRef> supported_protocols;
29- size_t i = 0 ;
30-
31- for (llvm::StringRef protocol_name =
32- PluginManager::GetProtocolServerPluginNameAtIndex (i++);
33- !protocol_name.empty ();
34- protocol_name = PluginManager::GetProtocolServerPluginNameAtIndex (i++)) {
35- supported_protocols.push_back (protocol_name);
36- }
37-
38- return supported_protocols;
39- }
40-
4127class CommandObjectProtocolServerStart : public CommandObjectParsed {
4228public:
4329 CommandObjectProtocolServerStart (CommandInterpreter &interpreter)
@@ -58,12 +44,11 @@ class CommandObjectProtocolServerStart : public CommandObjectParsed {
5844 }
5945
6046 llvm::StringRef protocol = args.GetArgumentAtIndex (0 );
61- std::vector<llvm::StringRef> supported_protocols = GetSupportedProtocols ();
62- if (llvm::find (supported_protocols, protocol) ==
63- supported_protocols.end ()) {
47+ ProtocolServer *server = ProtocolServer::GetOrCreate (protocol);
48+ if (!server) {
6449 result.AppendErrorWithFormatv (
6550 " unsupported protocol: {0}. Supported protocols are: {1}" , protocol,
66- llvm::join (GetSupportedProtocols (), " , " ));
51+ llvm::join (ProtocolServer:: GetSupportedProtocols (), " , " ));
6752 return ;
6853 }
6954
@@ -73,10 +58,6 @@ class CommandObjectProtocolServerStart : public CommandObjectParsed {
7358 }
7459 llvm::StringRef connection_uri = args.GetArgumentAtIndex (1 );
7560
76- ProtocolServerSP server_sp = GetDebugger ().GetProtocolServer (protocol);
77- if (!server_sp)
78- server_sp = ProtocolServer::Create (protocol, GetDebugger ());
79-
8061 const char *connection_error =
8162 " unsupported connection specifier, expected 'accept:///path' or "
8263 " 'listen://[host]:port', got '{0}'." ;
@@ -99,14 +80,12 @@ class CommandObjectProtocolServerStart : public CommandObjectParsed {
9980 formatv (" [{0}]:{1}" , uri->hostname .empty () ? " 0.0.0.0" : uri->hostname ,
10081 uri->port .value_or (0 ));
10182
102- if (llvm::Error error = server_sp ->Start (connection)) {
83+ if (llvm::Error error = server ->Start (connection)) {
10384 result.AppendErrorWithFormatv (" {0}" , llvm::fmt_consume (std::move (error)));
10485 return ;
10586 }
10687
107- GetDebugger ().AddProtocolServer (server_sp);
108-
109- if (Socket *socket = server_sp->GetSocket ()) {
88+ if (Socket *socket = server->GetSocket ()) {
11089 std::string address =
11190 llvm::join (socket->GetListeningConnectionURI (), " , " );
11291 result.AppendMessageWithFormatv (
@@ -135,30 +114,18 @@ class CommandObjectProtocolServerStop : public CommandObjectParsed {
135114 }
136115
137116 llvm::StringRef protocol = args.GetArgumentAtIndex (0 );
138- std::vector<llvm::StringRef> supported_protocols = GetSupportedProtocols ();
139- if (llvm::find (supported_protocols, protocol) ==
140- supported_protocols.end ()) {
117+ ProtocolServer *server = ProtocolServer::GetOrCreate (protocol);
118+ if (!server) {
141119 result.AppendErrorWithFormatv (
142120 " unsupported protocol: {0}. Supported protocols are: {1}" , protocol,
143- llvm::join (GetSupportedProtocols (), " , " ));
121+ llvm::join (ProtocolServer:: GetSupportedProtocols (), " , " ));
144122 return ;
145123 }
146124
147- Debugger &debugger = GetDebugger ();
148-
149- ProtocolServerSP server_sp = debugger.GetProtocolServer (protocol);
150- if (!server_sp) {
151- result.AppendError (
152- llvm::formatv (" no {0} protocol server running" , protocol).str ());
153- return ;
154- }
155-
156- if (llvm::Error error = server_sp->Stop ()) {
125+ if (llvm::Error error = server->Stop ()) {
157126 result.AppendErrorWithFormatv (" {0}" , llvm::fmt_consume (std::move (error)));
158127 return ;
159128 }
160-
161- debugger.RemoveProtocolServer (server_sp);
162129 }
163130};
164131
0 commit comments