@@ -23,20 +23,6 @@ using namespace lldb_private;
2323#define LLDB_OPTIONS_mcp
2424#include " CommandOptions.inc"
2525
26- static std::vector<llvm::StringRef> GetSupportedProtocols () {
27- std::vector<llvm::StringRef> supported_protocols;
28- size_t i = 0 ;
29-
30- for (llvm::StringRef protocol_name =
31- PluginManager::GetProtocolServerPluginNameAtIndex (i++);
32- !protocol_name.empty ();
33- protocol_name = PluginManager::GetProtocolServerPluginNameAtIndex (i++)) {
34- supported_protocols.push_back (protocol_name);
35- }
36-
37- return supported_protocols;
38- }
39-
4026class CommandObjectProtocolServerStart : public CommandObjectParsed {
4127public:
4228 CommandObjectProtocolServerStart (CommandInterpreter &interpreter)
@@ -57,12 +43,11 @@ class CommandObjectProtocolServerStart : public CommandObjectParsed {
5743 }
5844
5945 llvm::StringRef protocol = args.GetArgumentAtIndex (0 );
60- std::vector<llvm::StringRef> supported_protocols = GetSupportedProtocols ();
61- if (llvm::find (supported_protocols, protocol) ==
62- supported_protocols.end ()) {
46+ ProtocolServer *server = ProtocolServer::GetOrCreate (protocol);
47+ if (!server) {
6348 result.AppendErrorWithFormatv (
6449 " unsupported protocol: {0}. Supported protocols are: {1}" , protocol,
65- llvm::join (GetSupportedProtocols (), " , " ));
50+ llvm::join (ProtocolServer:: GetSupportedProtocols (), " , " ));
6651 return ;
6752 }
6853
@@ -72,10 +57,6 @@ class CommandObjectProtocolServerStart : public CommandObjectParsed {
7257 }
7358 llvm::StringRef connection_uri = args.GetArgumentAtIndex (1 );
7459
75- ProtocolServerSP server_sp = GetDebugger ().GetProtocolServer (protocol);
76- if (!server_sp)
77- server_sp = ProtocolServer::Create (protocol, GetDebugger ());
78-
7960 const char *connection_error =
8061 " unsupported connection specifier, expected 'accept:///path' or "
8162 " 'listen://[host]:port', got '{0}'." ;
@@ -98,14 +79,12 @@ class CommandObjectProtocolServerStart : public CommandObjectParsed {
9879 formatv (" [{0}]:{1}" , uri->hostname .empty () ? " 0.0.0.0" : uri->hostname ,
9980 uri->port .value_or (0 ));
10081
101- if (llvm::Error error = server_sp ->Start (connection)) {
82+ if (llvm::Error error = server ->Start (connection)) {
10283 result.AppendErrorWithFormatv (" {0}" , llvm::fmt_consume (std::move (error)));
10384 return ;
10485 }
10586
106- GetDebugger ().AddProtocolServer (server_sp);
107-
108- if (Socket *socket = server_sp->GetSocket ()) {
87+ if (Socket *socket = server->GetSocket ()) {
10988 std::string address =
11089 llvm::join (socket->GetListeningConnectionURI (), " , " );
11190 result.AppendMessageWithFormatv (
@@ -134,30 +113,18 @@ class CommandObjectProtocolServerStop : public CommandObjectParsed {
134113 }
135114
136115 llvm::StringRef protocol = args.GetArgumentAtIndex (0 );
137- std::vector<llvm::StringRef> supported_protocols = GetSupportedProtocols ();
138- if (llvm::find (supported_protocols, protocol) ==
139- supported_protocols.end ()) {
116+ ProtocolServer *server = ProtocolServer::GetOrCreate (protocol);
117+ if (!server) {
140118 result.AppendErrorWithFormatv (
141119 " unsupported protocol: {0}. Supported protocols are: {1}" , protocol,
142- llvm::join (GetSupportedProtocols (), " , " ));
120+ llvm::join (ProtocolServer:: GetSupportedProtocols (), " , " ));
143121 return ;
144122 }
145123
146- Debugger &debugger = GetDebugger ();
147-
148- ProtocolServerSP server_sp = debugger.GetProtocolServer (protocol);
149- if (!server_sp) {
150- result.AppendError (
151- llvm::formatv (" no {0} protocol server running" , protocol).str ());
152- return ;
153- }
154-
155- if (llvm::Error error = server_sp->Stop ()) {
124+ if (llvm::Error error = server->Stop ()) {
156125 result.AppendErrorWithFormatv (" {0}" , llvm::fmt_consume (std::move (error)));
157126 return ;
158127 }
159-
160- debugger.RemoveProtocolServer (server_sp);
161128 }
162129};
163130
0 commit comments