Skip to content

Commit e1acadb

Browse files
committed
[lldb] [Host/ConnectionFileDescriptor] Refactor to improve code reuse
Refactor ConnectionFileDescriptor to improve code reuse for different types of sockets. Unify method naming. While at it, remove some (now-)dead code from Socket. Differential Revision: https://reviews.llvm.org/D112495
1 parent 9bc7e54 commit e1acadb

File tree

4 files changed

+88
-196
lines changed

4 files changed

+88
-196
lines changed

lldb/include/lldb/Host/Socket.h

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -75,18 +75,6 @@ class Socket : public IOObject {
7575
static llvm::Expected<std::unique_ptr<UDPSocket>>
7676
UdpConnect(llvm::StringRef host_and_port, bool child_processes_inherit);
7777

78-
static Status UnixDomainConnect(llvm::StringRef host_and_port,
79-
bool child_processes_inherit,
80-
Socket *&socket);
81-
static Status UnixDomainAccept(llvm::StringRef host_and_port,
82-
bool child_processes_inherit, Socket *&socket);
83-
static Status UnixAbstractConnect(llvm::StringRef host_and_port,
84-
bool child_processes_inherit,
85-
Socket *&socket);
86-
static Status UnixAbstractAccept(llvm::StringRef host_and_port,
87-
bool child_processes_inherit,
88-
Socket *&socket);
89-
9078
int GetOption(int level, int option_name, int &option_value);
9179
int SetOption(int level, int option_name, int option_value);
9280

lldb/include/lldb/Host/posix/ConnectionFileDescriptorPosix.h

Lines changed: 21 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
#include "lldb/lldb-forward.h"
1717

1818
#include "lldb/Host/Pipe.h"
19+
#include "lldb/Host/Socket.h"
1920
#include "lldb/Utility/Connection.h"
2021
#include "lldb/Utility/IOObject.h"
2122

@@ -73,9 +74,18 @@ class ConnectionFileDescriptor : public Connection {
7374
void CloseCommandPipe();
7475

7576
lldb::ConnectionStatus
76-
SocketListenAndAccept(llvm::StringRef host_and_port,
77-
socket_id_callback_type socket_id_callback,
78-
Status *error_ptr);
77+
AcceptSocket(Socket::SocketProtocol socket_protocol,
78+
llvm::StringRef socket_name,
79+
llvm::function_ref<void(Socket &)> post_listen_callback,
80+
Status *error_ptr);
81+
82+
lldb::ConnectionStatus ConnectSocket(Socket::SocketProtocol socket_protocol,
83+
llvm::StringRef socket_name,
84+
Status *error_ptr);
85+
86+
lldb::ConnectionStatus AcceptTCP(llvm::StringRef host_and_port,
87+
socket_id_callback_type socket_id_callback,
88+
Status *error_ptr);
7989

8090
lldb::ConnectionStatus ConnectTCP(llvm::StringRef host_and_port,
8191
socket_id_callback_type socket_id_callback,
@@ -86,24 +96,24 @@ class ConnectionFileDescriptor : public Connection {
8696
Status *error_ptr);
8797

8898
lldb::ConnectionStatus
89-
NamedSocketConnect(llvm::StringRef socket_name,
99+
ConnectNamedSocket(llvm::StringRef socket_name,
90100
socket_id_callback_type socket_id_callback,
91101
Status *error_ptr);
92102

93103
lldb::ConnectionStatus
94-
NamedSocketAccept(llvm::StringRef socket_name,
104+
AcceptNamedSocket(llvm::StringRef socket_name,
95105
socket_id_callback_type socket_id_callback,
96106
Status *error_ptr);
97107

98108
lldb::ConnectionStatus
99-
UnixAbstractSocketAccept(llvm::StringRef socket_name,
100-
socket_id_callback_type socket_id_callback,
101-
Status *error_ptr);
109+
AcceptAbstractSocket(llvm::StringRef socket_name,
110+
socket_id_callback_type socket_id_callback,
111+
Status *error_ptr);
102112

103113
lldb::ConnectionStatus
104-
UnixAbstractSocketConnect(llvm::StringRef socket_name,
105-
socket_id_callback_type socket_id_callback,
106-
Status *error_ptr);
114+
ConnectAbstractSocket(llvm::StringRef socket_name,
115+
socket_id_callback_type socket_id_callback,
116+
Status *error_ptr);
107117

108118
lldb::ConnectionStatus ConnectFD(llvm::StringRef args,
109119
socket_id_callback_type socket_id_callback,

lldb/source/Host/common/Socket.cpp

Lines changed: 0 additions & 77 deletions
Original file line numberDiff line numberDiff line change
@@ -167,26 +167,13 @@ Socket::TcpListen(llvm::StringRef host_and_port, bool child_processes_inherit,
167167
Log *log(lldb_private::GetLogIfAnyCategoriesSet(LIBLLDB_LOG_CONNECTION));
168168
LLDB_LOG(log, "host_and_port = {0}", host_and_port);
169169

170-
std::string host_str;
171-
std::string port_str;
172-
uint16_t port;
173-
if (llvm::Error decode_error =
174-
DecodeHostAndPort(host_and_port, host_str, port_str, port))
175-
return std::move(decode_error);
176-
177170
std::unique_ptr<TCPSocket> listen_socket(
178171
new TCPSocket(true, child_processes_inherit));
179172

180173
Status error = listen_socket->Listen(host_and_port, backlog);
181174
if (error.Fail())
182175
return error.ToError();
183176

184-
// We were asked to listen on port zero which means we must now read the
185-
// actual port that was given to us as port zero is a special code for
186-
// "find an open port for me".
187-
if (port == 0)
188-
port = listen_socket->GetLocalPortNumber();
189-
190177
return std::move(listen_socket);
191178
}
192179

@@ -196,70 +183,6 @@ Socket::UdpConnect(llvm::StringRef host_and_port,
196183
return UDPSocket::Connect(host_and_port, child_processes_inherit);
197184
}
198185

199-
Status Socket::UnixDomainConnect(llvm::StringRef name,
200-
bool child_processes_inherit,
201-
Socket *&socket) {
202-
Status error;
203-
std::unique_ptr<Socket> connect_socket(
204-
Create(ProtocolUnixDomain, child_processes_inherit, error));
205-
if (error.Fail())
206-
return error;
207-
208-
error = connect_socket->Connect(name);
209-
if (error.Success())
210-
socket = connect_socket.release();
211-
212-
return error;
213-
}
214-
215-
Status Socket::UnixDomainAccept(llvm::StringRef name,
216-
bool child_processes_inherit, Socket *&socket) {
217-
Status error;
218-
std::unique_ptr<Socket> listen_socket(
219-
Create(ProtocolUnixDomain, child_processes_inherit, error));
220-
if (error.Fail())
221-
return error;
222-
223-
error = listen_socket->Listen(name, 5);
224-
if (error.Fail())
225-
return error;
226-
227-
error = listen_socket->Accept(socket);
228-
return error;
229-
}
230-
231-
Status Socket::UnixAbstractConnect(llvm::StringRef name,
232-
bool child_processes_inherit,
233-
Socket *&socket) {
234-
Status error;
235-
std::unique_ptr<Socket> connect_socket(
236-
Create(ProtocolUnixAbstract, child_processes_inherit, error));
237-
if (error.Fail())
238-
return error;
239-
240-
error = connect_socket->Connect(name);
241-
if (error.Success())
242-
socket = connect_socket.release();
243-
return error;
244-
}
245-
246-
Status Socket::UnixAbstractAccept(llvm::StringRef name,
247-
bool child_processes_inherit,
248-
Socket *&socket) {
249-
Status error;
250-
std::unique_ptr<Socket> listen_socket(
251-
Create(ProtocolUnixAbstract, child_processes_inherit, error));
252-
if (error.Fail())
253-
return error;
254-
255-
error = listen_socket->Listen(name, 5);
256-
if (error.Fail())
257-
return error;
258-
259-
error = listen_socket->Accept(socket);
260-
return error;
261-
}
262-
263186
llvm::Error Socket::DecodeHostAndPort(llvm::StringRef host_and_port,
264187
std::string &host_str,
265188
std::string &port_str, uint16_t &port) {

0 commit comments

Comments
 (0)