summaryrefslogtreecommitdiff
path: root/lldb/source/Host/common/Socket.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lldb/source/Host/common/Socket.cpp')
-rw-r--r--lldb/source/Host/common/Socket.cpp32
1 files changed, 29 insertions, 3 deletions
diff --git a/lldb/source/Host/common/Socket.cpp b/lldb/source/Host/common/Socket.cpp
index 76f74401ac4d..5c5cd653c3d9 100644
--- a/lldb/source/Host/common/Socket.cpp
+++ b/lldb/source/Host/common/Socket.cpp
@@ -271,7 +271,8 @@ Socket::UdpConnect(llvm::StringRef host_and_port) {
return UDPSocket::CreateConnected(host_and_port);
}
-llvm::Expected<Socket::HostAndPort> Socket::DecodeHostAndPort(llvm::StringRef host_and_port) {
+llvm::Expected<Socket::HostAndPort>
+Socket::DecodeHostAndPort(llvm::StringRef host_and_port) {
static llvm::Regex g_regex("([^:]+|\\[[0-9a-fA-F:]+.*\\]):([0-9]+)");
HostAndPort ret;
llvm::SmallVector<llvm::StringRef, 3> matches;
@@ -347,8 +348,8 @@ Status Socket::Write(const void *buf, size_t &num_bytes) {
", src = %p, src_len = %" PRIu64 ", flags = 0) => %" PRIi64
" (error = %s)",
static_cast<void *>(this), static_cast<uint64_t>(m_socket), buf,
- static_cast<uint64_t>(src_len),
- static_cast<int64_t>(bytes_sent), error.AsCString());
+ static_cast<uint64_t>(src_len), static_cast<int64_t>(bytes_sent),
+ error.AsCString());
}
return error;
@@ -476,3 +477,28 @@ llvm::raw_ostream &lldb_private::operator<<(llvm::raw_ostream &OS,
const Socket::HostAndPort &HP) {
return OS << '[' << HP.hostname << ']' << ':' << HP.port;
}
+
+std::optional<Socket::ProtocolModePair>
+Socket::GetProtocolAndMode(llvm::StringRef scheme) {
+ // Keep in sync with ConnectionFileDescriptor::Connect.
+ return llvm::StringSwitch<std::optional<ProtocolModePair>>(scheme)
+ .Case("listen", ProtocolModePair{SocketProtocol::ProtocolTcp,
+ SocketMode::ModeAccept})
+ .Cases("accept", "unix-accept",
+ ProtocolModePair{SocketProtocol::ProtocolUnixDomain,
+ SocketMode::ModeAccept})
+ .Case("unix-abstract-accept",
+ ProtocolModePair{SocketProtocol::ProtocolUnixAbstract,
+ SocketMode::ModeAccept})
+ .Cases("connect", "tcp-connect",
+ ProtocolModePair{SocketProtocol::ProtocolTcp,
+ SocketMode::ModeConnect})
+ .Case("udp", ProtocolModePair{SocketProtocol::ProtocolTcp,
+ SocketMode::ModeConnect})
+ .Case("unix-connect", ProtocolModePair{SocketProtocol::ProtocolUnixDomain,
+ SocketMode::ModeConnect})
+ .Case("unix-abstract-connect",
+ ProtocolModePair{SocketProtocol::ProtocolUnixAbstract,
+ SocketMode::ModeConnect})
+ .Default(std::nullopt);
+}