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
16namespace lldb_private {
17class TCPSocket : public Socket {
18public:
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
51private:
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

source code of lldb/include/lldb/Host/common/TCPSocket.h