|
16 | 16 | #include "llvm/Support/AutoConvert.h"
|
17 | 17 | #include "llvm/Support/Compiler.h"
|
18 | 18 | #include "llvm/Support/Duration.h"
|
19 |
| -#include "llvm/Support/Error.h" |
20 | 19 | #include "llvm/Support/ErrorHandling.h"
|
21 | 20 | #include "llvm/Support/FileSystem.h"
|
22 | 21 | #include "llvm/Support/Format.h"
|
|
25 | 24 | #include "llvm/Support/NativeFormatting.h"
|
26 | 25 | #include "llvm/Support/Process.h"
|
27 | 26 | #include "llvm/Support/Program.h"
|
28 |
| -#include "llvm/Support/Threading.h" |
29 | 27 | #include <algorithm>
|
30 | 28 | #include <cerrno>
|
31 | 29 | #include <cstdio>
|
32 | 30 | #include <sys/stat.h>
|
33 | 31 |
|
34 |
| -#ifndef _WIN32 |
35 |
| -#include <sys/socket.h> |
36 |
| -#include <sys/un.h> |
37 |
| -#endif // _WIN32 |
38 |
| - |
39 | 32 | // <fcntl.h> may provide O_BINARY.
|
40 | 33 | #if defined(HAVE_FCNTL_H)
|
41 | 34 | # include <fcntl.h>
|
|
66 | 59 | #include "llvm/Support/ConvertUTF.h"
|
67 | 60 | #include "llvm/Support/Signals.h"
|
68 | 61 | #include "llvm/Support/Windows/WindowsSupport.h"
|
69 |
| -// winsock2.h must be included before afunix.h. Briefly turn off clang-format to |
70 |
| -// avoid error. |
71 |
| -// clang-format off |
72 |
| -#include <winsock2.h> |
73 |
| -#include <afunix.h> |
74 |
| -// clang-format on |
75 |
| -#include <io.h> |
76 | 62 | #endif
|
77 | 63 |
|
78 | 64 | using namespace llvm;
|
@@ -659,7 +645,7 @@ raw_fd_ostream::raw_fd_ostream(int fd, bool shouldClose, bool unbuffered,
|
659 | 645 | // Check if this is a console device. This is not equivalent to isatty.
|
660 | 646 | IsWindowsConsole =
|
661 | 647 | ::GetFileType((HANDLE)::_get_osfhandle(fd)) == FILE_TYPE_CHAR;
|
662 |
| -#endif // _WIN32 |
| 648 | +#endif |
663 | 649 |
|
664 | 650 | // Get the starting position.
|
665 | 651 | off_t loc = ::lseek(FD, 0, SEEK_CUR);
|
@@ -968,153 +954,6 @@ bool raw_fd_stream::classof(const raw_ostream *OS) {
|
968 | 954 | return OS->get_kind() == OStreamKind::OK_FDStream;
|
969 | 955 | }
|
970 | 956 |
|
971 |
| -//===----------------------------------------------------------------------===// |
972 |
| -// raw_socket_stream |
973 |
| -//===----------------------------------------------------------------------===// |
974 |
| - |
975 |
| -#ifdef _WIN32 |
976 |
| -WSABalancer::WSABalancer() { |
977 |
| - WSADATA WsaData; |
978 |
| - ::memset(&WsaData, 0, sizeof(WsaData)); |
979 |
| - if (WSAStartup(MAKEWORD(2, 2), &WsaData) != 0) { |
980 |
| - llvm::report_fatal_error("WSAStartup failed"); |
981 |
| - } |
982 |
| -} |
983 |
| - |
984 |
| -WSABalancer::~WSABalancer() { WSACleanup(); } |
985 |
| - |
986 |
| -#endif // _WIN32 |
987 |
| - |
988 |
| -static std::error_code getLastSocketErrorCode() { |
989 |
| -#ifdef _WIN32 |
990 |
| - return std::error_code(::WSAGetLastError(), std::system_category()); |
991 |
| -#else |
992 |
| - return std::error_code(errno, std::system_category()); |
993 |
| -#endif |
994 |
| -} |
995 |
| - |
996 |
| -ListeningSocket::ListeningSocket(int SocketFD, StringRef SocketPath) |
997 |
| - : FD(SocketFD), SocketPath(SocketPath) {} |
998 |
| - |
999 |
| -ListeningSocket::ListeningSocket(ListeningSocket &&LS) |
1000 |
| - : FD(LS.FD), SocketPath(LS.SocketPath) { |
1001 |
| - LS.FD = -1; |
1002 |
| -} |
1003 |
| - |
1004 |
| -Expected<ListeningSocket> ListeningSocket::createUnix(StringRef SocketPath, |
1005 |
| - int MaxBacklog) { |
1006 |
| - |
1007 |
| -#ifdef _WIN32 |
1008 |
| - WSABalancer _; |
1009 |
| - SOCKET MaybeWinsocket = socket(AF_UNIX, SOCK_STREAM, 0); |
1010 |
| - if (MaybeWinsocket == INVALID_SOCKET) { |
1011 |
| -#else |
1012 |
| - int MaybeWinsocket = socket(AF_UNIX, SOCK_STREAM, 0); |
1013 |
| - if (MaybeWinsocket == -1) { |
1014 |
| -#endif |
1015 |
| - return llvm::make_error<StringError>(getLastSocketErrorCode(), |
1016 |
| - "socket create failed"); |
1017 |
| - } |
1018 |
| - |
1019 |
| - struct sockaddr_un Addr; |
1020 |
| - memset(&Addr, 0, sizeof(Addr)); |
1021 |
| - Addr.sun_family = AF_UNIX; |
1022 |
| - strncpy(Addr.sun_path, SocketPath.str().c_str(), sizeof(Addr.sun_path) - 1); |
1023 |
| - |
1024 |
| - if (bind(MaybeWinsocket, (struct sockaddr *)&Addr, sizeof(Addr)) == -1) { |
1025 |
| - std::error_code Err = getLastSocketErrorCode(); |
1026 |
| - if (Err == std::errc::address_in_use) |
1027 |
| - ::close(MaybeWinsocket); |
1028 |
| - return llvm::make_error<StringError>(Err, "Bind error"); |
1029 |
| - } |
1030 |
| - if (listen(MaybeWinsocket, MaxBacklog) == -1) { |
1031 |
| - return llvm::make_error<StringError>(getLastSocketErrorCode(), |
1032 |
| - "Listen error"); |
1033 |
| - } |
1034 |
| - int UnixSocket; |
1035 |
| -#ifdef _WIN32 |
1036 |
| - UnixSocket = _open_osfhandle(MaybeWinsocket, 0); |
1037 |
| -#else |
1038 |
| - UnixSocket = MaybeWinsocket; |
1039 |
| -#endif // _WIN32 |
1040 |
| - return ListeningSocket{UnixSocket, SocketPath}; |
1041 |
| -} |
1042 |
| - |
1043 |
| -Expected<std::unique_ptr<raw_socket_stream>> ListeningSocket::accept() { |
1044 |
| - int AcceptFD; |
1045 |
| -#ifdef _WIN32 |
1046 |
| - SOCKET WinServerSock = _get_osfhandle(FD); |
1047 |
| - SOCKET WinAcceptSock = ::accept(WinServerSock, NULL, NULL); |
1048 |
| - AcceptFD = _open_osfhandle(WinAcceptSock, 0); |
1049 |
| -#else |
1050 |
| - AcceptFD = ::accept(FD, NULL, NULL); |
1051 |
| -#endif //_WIN32 |
1052 |
| - if (AcceptFD == -1) |
1053 |
| - return llvm::make_error<StringError>(getLastSocketErrorCode(), |
1054 |
| - "Accept failed"); |
1055 |
| - return std::make_unique<raw_socket_stream>(AcceptFD); |
1056 |
| -} |
1057 |
| - |
1058 |
| -ListeningSocket::~ListeningSocket() { |
1059 |
| - if (FD == -1) |
1060 |
| - return; |
1061 |
| - ::close(FD); |
1062 |
| - unlink(SocketPath.c_str()); |
1063 |
| -} |
1064 |
| - |
1065 |
| -static Expected<int> GetSocketFD(StringRef SocketPath) { |
1066 |
| -#ifdef _WIN32 |
1067 |
| - SOCKET MaybeWinsocket = socket(AF_UNIX, SOCK_STREAM, 0); |
1068 |
| - if (MaybeWinsocket == INVALID_SOCKET) { |
1069 |
| -#else |
1070 |
| - int MaybeWinsocket = socket(AF_UNIX, SOCK_STREAM, 0); |
1071 |
| - if (MaybeWinsocket == -1) { |
1072 |
| -#endif // _WIN32 |
1073 |
| - return llvm::make_error<StringError>(getLastSocketErrorCode(), |
1074 |
| - "Create socket failed"); |
1075 |
| - } |
1076 |
| - |
1077 |
| - struct sockaddr_un Addr; |
1078 |
| - memset(&Addr, 0, sizeof(Addr)); |
1079 |
| - Addr.sun_family = AF_UNIX; |
1080 |
| - strncpy(Addr.sun_path, SocketPath.str().c_str(), sizeof(Addr.sun_path) - 1); |
1081 |
| - |
1082 |
| - int status = connect(MaybeWinsocket, (struct sockaddr *)&Addr, sizeof(Addr)); |
1083 |
| - if (status == -1) { |
1084 |
| - return llvm::make_error<StringError>(getLastSocketErrorCode(), |
1085 |
| - "Connect socket failed"); |
1086 |
| - } |
1087 |
| -#ifdef _WIN32 |
1088 |
| - return _open_osfhandle(MaybeWinsocket, 0); |
1089 |
| -#else |
1090 |
| - return MaybeWinsocket; |
1091 |
| -#endif // _WIN32 |
1092 |
| -} |
1093 |
| - |
1094 |
| -raw_socket_stream::raw_socket_stream(int SocketFD) |
1095 |
| - : raw_fd_stream(SocketFD, true) {} |
1096 |
| - |
1097 |
| -Expected<std::unique_ptr<raw_socket_stream>> |
1098 |
| -raw_socket_stream::createConnectedUnix(StringRef SocketPath) { |
1099 |
| -#ifdef _WIN32 |
1100 |
| - WSABalancer _; |
1101 |
| -#endif // _WIN32 |
1102 |
| - Expected<int> FD = GetSocketFD(SocketPath); |
1103 |
| - if (!FD) |
1104 |
| - return FD.takeError(); |
1105 |
| - return std::make_unique<raw_socket_stream>(*FD); |
1106 |
| -} |
1107 |
| - |
1108 |
| -raw_socket_stream::~raw_socket_stream() {} |
1109 |
| - |
1110 |
| -//===----------------------------------------------------------------------===// |
1111 |
| -// raw_string_ostream |
1112 |
| -//===----------------------------------------------------------------------===// |
1113 |
| - |
1114 |
| -void raw_string_ostream::write_impl(const char *Ptr, size_t Size) { |
1115 |
| - OS.append(Ptr, Size); |
1116 |
| -} |
1117 |
| - |
1118 | 957 | //===----------------------------------------------------------------------===//
|
1119 | 958 | // raw_svector_ostream
|
1120 | 959 | //===----------------------------------------------------------------------===//
|
|
0 commit comments