================ @@ -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); ---------------- labath wrote:
No reason. I sort of actually have a patch stack for a major overhaul of the socket classes, and it fixes this (among other things). This PR is kind of a part of a very long and windy way of upstreaming it. :) https://github.com/llvm/llvm-project/pull/145015 _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits