@@ -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