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