[Lldb-commits] [lldb] [lldb] Add Socket::CreatePair (PR #145015)
Jonas Devlieghere via lldb-commits
lldb-commits at lists.llvm.org
Fri Jun 20 11:17:13 PDT 2025
================
@@ -52,6 +52,34 @@ TCPSocket::TCPSocket(NativeSocket socket, bool should_close)
TCPSocket::~TCPSocket() { CloseListenSockets(); }
+llvm::Expected<
+ std::pair<std::unique_ptr<TCPSocket>, std::unique_ptr<TCPSocket>>>
+TCPSocket::CreatePair() {
+ auto listen_socket_up = std::make_unique<TCPSocket>(true);
+ if (Status error = listen_socket_up->Listen("localhost:0", 5); error.Fail())
+ return error.takeError();
+
+ std::string connect_address =
+ llvm::StringRef(listen_socket_up->GetListeningConnectionURI()[0])
+ .split("://")
+ .second.str();
+
+ auto connect_socket_up = std::make_unique<TCPSocket>(true);
+ if (Status error = connect_socket_up->Connect(connect_address); error.Fail())
+ return error.takeError();
+
+ // Connection has already been made above, so a short timeout is sufficient.
+ Socket *accept_socket;
+ if (Status error =
+ listen_socket_up->Accept(std::chrono::seconds(1), accept_socket);
----------------
JDevlieghere wrote:
Can you think of a reason why we couldn't change the signature of `Socket::Accept` to return an `llvm::Expected<std::unique_ptr>>` instead of this Status + Socket* out parameter? Not trying to sign you up for it but it stands out.
https://github.com/llvm/llvm-project/pull/145015
More information about the lldb-commits
mailing list