1 //===-- TCPSocket.h ---------------------------------------------*- C++ -*-===// 2 // 3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4 // See https://llvm.org/LICENSE.txt for license information. 5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6 // 7 //===----------------------------------------------------------------------===// 8 9 #ifndef LLDB_HOST_COMMON_TCPSOCKET_H 10 #define LLDB_HOST_COMMON_TCPSOCKET_H 11 12 #include "lldb/Host/Socket.h" 13 #include "lldb/Host/SocketAddress.h" 14 #include <map> 15 16 namespace lldb_private { 17 class TCPSocket : public Socket { 18 public: 19 TCPSocket(bool should_close, bool child_processes_inherit); 20 TCPSocket(NativeSocket socket, bool should_close, 21 bool child_processes_inherit); 22 ~TCPSocket() override; 23 24 // returns port number or 0 if error 25 uint16_t GetLocalPortNumber() const; 26 27 // returns ip address string or empty string if error 28 std::string GetLocalIPAddress() const; 29 30 // must be connected 31 // returns port number or 0 if error 32 uint16_t GetRemotePortNumber() const; 33 34 // must be connected 35 // returns ip address string or empty string if error 36 std::string GetRemoteIPAddress() const; 37 38 int SetOptionNoDelay(); 39 int SetOptionReuseAddress(); 40 41 Status Connect(llvm::StringRef name) override; 42 Status Listen(llvm::StringRef name, int backlog) override; 43 Status Accept(Socket *&conn_socket) override; 44 45 Status CreateSocket(int domain); 46 47 bool IsValid() const override; 48 49 std::string GetRemoteConnectionURI() const override; 50 51 private: 52 TCPSocket(NativeSocket socket, const TCPSocket &listen_socket); 53 54 void CloseListenSockets(); 55 56 std::map<int, SocketAddress> m_listen_sockets; 57 }; 58 } 59 60 #endif // LLDB_HOST_COMMON_TCPSOCKET_H 61