13#if _SQUID_WINDOWS_ || _SQUID_MINGW_
14#include <unordered_map>
19 const auto handle = _get_osfhandle(socketFd);
20 if (!isValidSocketHandle(handle)) {
28 al =
static_cast<int>(*saLength);
31 const auto result = accept(handle, sa, alp);
32 if (result == INVALID_SOCKET) {
33 SetErrnoFromWsaError();
36 const auto rv = _open_osfhandle(result, 0);
49 const auto handle = _get_osfhandle(socketFd);
50 if (!isValidSocketHandle(handle)) {
55 const auto result = bind(handle, sa,
static_cast<int>(saLength));
56 if (result == SOCKET_ERROR)
57 SetErrnoFromWsaError();
64 const auto handle = _get_osfhandle(socketFd);
65 if (!isValidSocketHandle(handle)) {
70 const auto result = connect(handle, sa,
static_cast<int>(saLength));
71 if (result == SOCKET_ERROR)
72 SetErrnoFromWsaError();
79 const auto handle = _get_osfhandle(socketFd);
80 if (!isValidSocketHandle(handle)) {
88 al =
static_cast<int>(*saLength);
91 const auto result = getsockname(handle, sa, alp);
92 if (result == SOCKET_ERROR)
93 SetErrnoFromWsaError();
100xgetsockopt(
int socketFd,
int level,
int optionName,
void * optionValue,
socklen_t * optionLength)
102 const auto handle = _get_osfhandle(socketFd);
103 if (!isValidSocketHandle(handle)) {
111 ol =
static_cast<int>(*optionLength);
114 const auto result = getsockopt(handle, level, optionName,
static_cast<char *
>(optionValue), olp);
115 if (result == SOCKET_ERROR)
116 SetErrnoFromWsaError();
118 *optionLength =
static_cast<socklen_t>(ol);
123xlisten(
int socketFd,
int backlog)
125 const auto handle = _get_osfhandle(socketFd);
126 if (!isValidSocketHandle(handle)) {
130 const auto result = listen(handle, backlog);
131 if (result == SOCKET_ERROR)
132 SetErrnoFromWsaError();
137xrecv(
int socketFd,
void * buf,
size_t bufLength,
int flags)
139 const auto handle = _get_osfhandle(socketFd);
140 if (!isValidSocketHandle(handle)) {
145 const auto result = recv(handle,
static_cast<char *
>(buf),
static_cast<int>(bufLength), flags);
146 if (result == SOCKET_ERROR)
147 SetErrnoFromWsaError();
152xrecvfrom(
int socketFd,
void * buf,
size_t bufLength,
int flags,
struct sockaddr * from,
socklen_t * fromLength)
154 const auto handle = _get_osfhandle(socketFd);
155 if (!isValidSocketHandle(handle)) {
164 fl =
static_cast<int>(*fromLength);
167 const auto result = recvfrom(handle,
static_cast<char *
>(buf),
static_cast<int>(bufLength), flags, from, flp);
168 if (result == SOCKET_ERROR)
169 SetErrnoFromWsaError();
171 *fromLength =
static_cast<socklen_t>(fl);
176xsend(
int socketFd,
const void * buf,
size_t bufLength,
int flags)
178 const auto handle = _get_osfhandle(socketFd);
179 if (!isValidSocketHandle(handle)) {
184 const auto result = send(handle,
static_cast<const char *
>(buf),
static_cast<int>(bufLength), flags);
185 if (result == SOCKET_ERROR)
186 SetErrnoFromWsaError();
191xsendto(
int socketFd,
const void * buf,
size_t bufLength,
int flags,
const struct sockaddr * to,
socklen_t toLength)
193 const auto handle = _get_osfhandle(socketFd);
194 if (!isValidSocketHandle(handle)) {
200 const auto result = sendto(handle,
static_cast<const char *
>(buf),
static_cast<int>(bufLength), flags, to,
static_cast<int>(toLength));
201 if (result == SOCKET_ERROR)
202 SetErrnoFromWsaError();
209 const auto handle = _get_osfhandle(socketFd);
210 if (!isValidSocketHandle(handle)) {
215 const auto result = setsockopt(handle, level, option,
static_cast<const char *
>(value),
static_cast<int>(valueLength));
216 if (result == SOCKET_ERROR)
217 SetErrnoFromWsaError();
222xsocket(
int domain,
int type,
int protocol)
224 const auto result = socket(domain, type, protocol);
225 if (result == INVALID_SOCKET) {
226 SetErrnoFromWsaError();
229 const auto rv = _open_osfhandle(result, 0);
int xsocket(int domain, int type, int protocol)
POSIX socket(2) equivalent.
ssize_t xsendto(int socketFd, const void *buf, size_t bufLength, int flags, const struct sockaddr *to, socklen_t toLength)
POSIX sendto(2) equivalent.
int xbind(int socketFd, const struct sockaddr *sa, socklen_t saLength)
POSIX bind(2) equivalent.
ssize_t xrecv(int socketFd, void *buf, size_t bufLength, int flags)
POSIX recv(2) equivalent.
ssize_t xsend(int socketFd, const void *buf, size_t bufLength, int flags)
POSIX send(2) equivalent.
ssize_t xrecvfrom(int socketFd, void *buf, size_t bufLength, int flags, struct sockaddr *from, socklen_t *fromLength)
POSIX recvfrom(2) equivalent.
int xgetsockopt(int socketFd, int level, int optionName, void *optionValue, socklen_t *optionLength)
POSIX getsockopt(2) equivalent.
int xgetsockname(int socketFd, struct sockaddr *sa, socklen_t *saLength)
POSIX getsockname(2) equivalent.
int xaccept(int socketFd, struct sockaddr *sa, socklen_t *saLength)
POSIX accept(2) equivalent.
int xsetsockopt(int socketFd, int level, int option, const void *value, socklen_t valueLength)
POSIX setsockopt(2) equivalent.
int xconnect(int socketFd, const struct sockaddr *sa, socklen_t saLength)
POSIX connect(2) equivalent.
int xlisten(int socketFd, int backlog)
POSIX listen(2) equivalent.