https://github.com/ashgti created 
https://github.com/llvm/llvm-project/pull/155711

Moving `lldb_protocol::mcp::MCPTransport` out of Server.h and into its own file 
and simplifying the name to `Transport`.

>From b10f3ffca74e08234960fc0a3d4dfb5431d901ee Mon Sep 17 00:00:00 2001
From: John Harrison <harj...@google.com>
Date: Wed, 27 Aug 2025 15:22:40 -0700
Subject: [PATCH] [lldb] NFC Moving mcp::Transport into its own file.

Moving `lldb_protocol::mcp::MCPTransport` out of Server.h and into its own file 
and simplifying the name to `Transport`.
---
 lldb/include/lldb/Protocol/MCP/MCPError.h     |  5 +--
 lldb/include/lldb/Protocol/MCP/Protocol.h     |  5 +++
 lldb/include/lldb/Protocol/MCP/Server.h       | 31 ++-------------
 lldb/include/lldb/Protocol/MCP/Transport.h    | 39 +++++++++++++++++++
 .../Protocol/MCP/ProtocolServerMCP.cpp        |  2 +-
 lldb/source/Protocol/MCP/CMakeLists.txt       |  1 +
 lldb/source/Protocol/MCP/Server.cpp           |  6 +--
 lldb/source/Protocol/MCP/Transport.cpp        | 32 +++++++++++++++
 .../Protocol/ProtocolMCPServerTest.cpp        |  7 ++--
 9 files changed, 90 insertions(+), 38 deletions(-)
 create mode 100644 lldb/include/lldb/Protocol/MCP/Transport.h
 create mode 100644 lldb/source/Protocol/MCP/Transport.cpp

diff --git a/lldb/include/lldb/Protocol/MCP/MCPError.h 
b/lldb/include/lldb/Protocol/MCP/MCPError.h
index 55dd40f124a15..52c5a78fa23c0 100644
--- a/lldb/include/lldb/Protocol/MCP/MCPError.h
+++ b/lldb/include/lldb/Protocol/MCP/MCPError.h
@@ -19,7 +19,7 @@ class MCPError : public llvm::ErrorInfo<MCPError> {
 public:
   static char ID;
 
-  MCPError(std::string message, int64_t error_code = kInternalError);
+  MCPError(std::string message, int64_t error_code = eErrorCodeInternalError);
 
   void log(llvm::raw_ostream &OS) const override;
   std::error_code convertToErrorCode() const override;
@@ -28,9 +28,6 @@ class MCPError : public llvm::ErrorInfo<MCPError> {
 
   lldb_protocol::mcp::Error toProtocolError() const;
 
-  static constexpr int64_t kResourceNotFound = -32002;
-  static constexpr int64_t kInternalError = -32603;
-
 private:
   std::string m_message;
   int64_t m_error_code;
diff --git a/lldb/include/lldb/Protocol/MCP/Protocol.h 
b/lldb/include/lldb/Protocol/MCP/Protocol.h
index 6e1ffcbe1f3e3..295f1f6e1b037 100644
--- a/lldb/include/lldb/Protocol/MCP/Protocol.h
+++ b/lldb/include/lldb/Protocol/MCP/Protocol.h
@@ -55,6 +55,11 @@ enum ErrorCode : signed {
   eErrorCodeInvalidParams = -32602,
   /// Internal JSON-RPC error.
   eErrorCodeInternalError = -32603,
+
+  /// Additional MCP error codes.
+
+  /// Resource related uri not found.
+  eErrorCodeResourceNotFound = -32002,
 };
 
 struct Error {
diff --git a/lldb/include/lldb/Protocol/MCP/Server.h 
b/lldb/include/lldb/Protocol/MCP/Server.h
index aa5714e45755e..009c574fde92f 100644
--- a/lldb/include/lldb/Protocol/MCP/Server.h
+++ b/lldb/include/lldb/Protocol/MCP/Server.h
@@ -9,43 +9,20 @@
 #ifndef LLDB_PROTOCOL_MCP_SERVER_H
 #define LLDB_PROTOCOL_MCP_SERVER_H
 
-#include "lldb/Host/JSONTransport.h"
 #include "lldb/Host/MainLoop.h"
 #include "lldb/Protocol/MCP/Protocol.h"
 #include "lldb/Protocol/MCP/Resource.h"
 #include "lldb/Protocol/MCP/Tool.h"
+#include "lldb/Protocol/MCP/Transport.h"
 #include "llvm/ADT/StringMap.h"
 #include "llvm/Support/Error.h"
-#include <mutex>
 
 namespace lldb_protocol::mcp {
 
-class MCPTransport
-    : public lldb_private::JSONRPCTransport<Request, Response, Notification> {
-public:
-  using LogCallback = std::function<void(llvm::StringRef message)>;
-
-  MCPTransport(lldb::IOObjectSP in, lldb::IOObjectSP out,
-               std::string client_name, LogCallback log_callback = {})
-      : JSONRPCTransport(in, out), m_client_name(std::move(client_name)),
-        m_log_callback(log_callback) {}
-  virtual ~MCPTransport() = default;
-
-  void Log(llvm::StringRef message) override {
-    if (m_log_callback)
-      m_log_callback(llvm::formatv("{0}: {1}", m_client_name, message).str());
-  }
-
-private:
-  std::string m_client_name;
-  LogCallback m_log_callback;
-};
-
-class Server : public MCPTransport::MessageHandler {
+class Server : public Transport::MessageHandler {
 public:
   Server(std::string name, std::string version,
-         std::unique_ptr<MCPTransport> transport_up,
-         lldb_private::MainLoop &loop);
+         std::unique_ptr<Transport> transport_up, lldb_private::MainLoop 
&loop);
   ~Server() = default;
 
   using NotificationHandler = std::function<void(const Notification &)>;
@@ -92,7 +69,7 @@ class Server : public MCPTransport::MessageHandler {
   const std::string m_name;
   const std::string m_version;
 
-  std::unique_ptr<MCPTransport> m_transport_up;
+  std::unique_ptr<Transport> m_transport_up;
   lldb_private::MainLoop &m_loop;
 
   llvm::StringMap<std::unique_ptr<Tool>> m_tools;
diff --git a/lldb/include/lldb/Protocol/MCP/Transport.h 
b/lldb/include/lldb/Protocol/MCP/Transport.h
new file mode 100644
index 0000000000000..3cb725131f3b0
--- /dev/null
+++ b/lldb/include/lldb/Protocol/MCP/Transport.h
@@ -0,0 +1,39 @@
+//===----------------------------------------------------------------------===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM 
Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLDB_PROTOCOL_MCP_TRANSPORT_H
+#define LLDB_PROTOCOL_MCP_TRANSPORT_H
+
+#include "lldb/Host/JSONTransport.h"
+#include "lldb/Protocol/MCP/Protocol.h"
+#include "lldb/lldb-forward.h"
+#include "llvm/ADT/StringRef.h"
+#include <functional>
+#include <string>
+
+namespace lldb_protocol::mcp {
+
+class Transport
+    : public lldb_private::JSONRPCTransport<Request, Response, Notification> {
+public:
+  using LogCallback = std::function<void(llvm::StringRef message)>;
+
+  Transport(lldb::IOObjectSP in, lldb::IOObjectSP out, std::string client_name,
+            LogCallback log_callback = {});
+  virtual ~Transport() = default;
+
+  void Log(llvm::StringRef message) override;
+
+private:
+  std::string m_client_name;
+  LogCallback m_log_callback;
+};
+
+} // namespace lldb_protocol::mcp
+
+#endif
diff --git a/lldb/source/Plugins/Protocol/MCP/ProtocolServerMCP.cpp 
b/lldb/source/Plugins/Protocol/MCP/ProtocolServerMCP.cpp
index 57132534cf680..a9c4164313a6d 100644
--- a/lldb/source/Plugins/Protocol/MCP/ProtocolServerMCP.cpp
+++ b/lldb/source/Plugins/Protocol/MCP/ProtocolServerMCP.cpp
@@ -67,7 +67,7 @@ void 
ProtocolServerMCP::AcceptCallback(std::unique_ptr<Socket> socket) {
   LLDB_LOG(log, "New MCP client connected: {0}", client_name);
 
   lldb::IOObjectSP io_sp = std::move(socket);
-  auto transport_up = std::make_unique<lldb_protocol::mcp::MCPTransport>(
+  auto transport_up = std::make_unique<lldb_protocol::mcp::Transport>(
       io_sp, io_sp, std::move(client_name), [&](llvm::StringRef message) {
         LLDB_LOG(GetLog(LLDBLog::Host), "{0}", message);
       });
diff --git a/lldb/source/Protocol/MCP/CMakeLists.txt 
b/lldb/source/Protocol/MCP/CMakeLists.txt
index a73e7e6a7cab1..23da62085537e 100644
--- a/lldb/source/Protocol/MCP/CMakeLists.txt
+++ b/lldb/source/Protocol/MCP/CMakeLists.txt
@@ -3,6 +3,7 @@ add_lldb_library(lldbProtocolMCP NO_PLUGIN_DEPENDENCIES
   Protocol.cpp
   Server.cpp
   Tool.cpp
+  Transport.cpp
 
   LINK_COMPONENTS
     Support
diff --git a/lldb/source/Protocol/MCP/Server.cpp 
b/lldb/source/Protocol/MCP/Server.cpp
index 63c2d01d17922..fb317083b015e 100644
--- a/lldb/source/Protocol/MCP/Server.cpp
+++ b/lldb/source/Protocol/MCP/Server.cpp
@@ -15,7 +15,7 @@ using namespace lldb_protocol::mcp;
 using namespace llvm;
 
 Server::Server(std::string name, std::string version,
-               std::unique_ptr<MCPTransport> transport_up,
+               std::unique_ptr<Transport> transport_up,
                lldb_private::MainLoop &loop)
     : m_name(std::move(name)), m_version(std::move(version)),
       m_transport_up(std::move(transport_up)), m_loop(loop) {
@@ -180,7 +180,7 @@ llvm::Expected<Response> Server::ResourcesReadHandler(const 
Request &request) {
 
   return make_error<MCPError>(
       llvm::formatv("no resource handler for uri: {0}", uri_str).str(),
-      MCPError::kResourceNotFound);
+      eErrorCodeResourceNotFound);
 }
 
 ServerCapabilities Server::GetCapabilities() {
@@ -219,7 +219,7 @@ void Server::Received(const Request &request) {
       response.takeError(),
       [&](const MCPError &err) { protocol_error = err.toProtocolError(); },
       [&](const llvm::ErrorInfoBase &err) {
-        protocol_error.code = MCPError::kInternalError;
+        protocol_error.code = eErrorCodeInternalError;
         protocol_error.message = err.message();
       });
   Response error_response;
diff --git a/lldb/source/Protocol/MCP/Transport.cpp 
b/lldb/source/Protocol/MCP/Transport.cpp
new file mode 100644
index 0000000000000..58c66af7320ed
--- /dev/null
+++ b/lldb/source/Protocol/MCP/Transport.cpp
@@ -0,0 +1,32 @@
+//===----------------------------------------------------------------------===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM 
Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#include "lldb/Protocol/MCP/Transport.h"
+#include "lldb/Host/JSONTransport.h"
+#include "lldb/lldb-forward.h"
+#include "llvm/ADT/StringRef.h"
+#include "llvm/Support/FormatVariadic.h"
+#include <string>
+#include <utility>
+
+using namespace llvm;
+using namespace lldb;
+
+namespace lldb_protocol::mcp {
+
+Transport::Transport(IOObjectSP in, IOObjectSP out, std::string client_name,
+                     LogCallback log_callback)
+    : JSONRPCTransport(in, out), m_client_name(std::move(client_name)),
+      m_log_callback(log_callback) {}
+
+void Transport::Log(StringRef message) {
+  if (m_log_callback)
+    m_log_callback(formatv("{0}: {1}", m_client_name, message).str());
+}
+
+} // namespace lldb_protocol::mcp
diff --git a/lldb/unittests/Protocol/ProtocolMCPServerTest.cpp 
b/lldb/unittests/Protocol/ProtocolMCPServerTest.cpp
index 9fa446133d46f..846582ab9a74e 100644
--- a/lldb/unittests/Protocol/ProtocolMCPServerTest.cpp
+++ b/lldb/unittests/Protocol/ProtocolMCPServerTest.cpp
@@ -21,6 +21,7 @@
 #include "lldb/Protocol/MCP/Resource.h"
 #include "lldb/Protocol/MCP/Server.h"
 #include "lldb/Protocol/MCP/Tool.h"
+#include "lldb/Protocol/MCP/Transport.h"
 #include "llvm/ADT/StringRef.h"
 #include "llvm/Support/Error.h"
 #include "llvm/Support/JSON.h"
@@ -36,12 +37,12 @@ using namespace lldb_private;
 using namespace lldb_protocol::mcp;
 
 namespace {
-class TestMCPTransport final : public MCPTransport {
+class TestMCPTransport final : public lldb_protocol::mcp::Transport {
 public:
   TestMCPTransport(lldb::IOObjectSP in, lldb::IOObjectSP out)
-      : lldb_protocol::mcp::MCPTransport(in, out, "unittest") {}
+      : lldb_protocol::mcp::Transport(in, out, "unittest") {}
 
-  using MCPTransport::Write;
+  using Transport::Write;
 
   void Log(llvm::StringRef message) override {
     log_messages.emplace_back(message);

_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to