moveonly: move SetSocketNonBlocking() from netbase to util/sock

To be converted to a method of the `Sock` class.
This commit is contained in:
Vasil Dimov
2022-07-05 12:20:42 +02:00
parent b4bac55679
commit 29f66f7682
4 changed files with 18 additions and 17 deletions

View File

@@ -117,6 +117,21 @@ int Sock::GetSockName(sockaddr* name, socklen_t* name_len) const
return getsockname(m_socket, name, name_len);
}
bool SetSocketNonBlocking(const SOCKET& hSocket)
{
#ifdef WIN32
u_long nOne = 1;
if (ioctlsocket(hSocket, FIONBIO, &nOne) == SOCKET_ERROR) {
#else
int fFlags = fcntl(hSocket, F_GETFL, 0);
if (fcntl(hSocket, F_SETFL, fFlags | O_NONBLOCK) == SOCKET_ERROR) {
#endif
return false;
}
return true;
}
bool Sock::IsSelectable() const
{
#if defined(USE_POLL) || defined(WIN32)

View File

@@ -273,6 +273,9 @@ private:
void Close();
};
/** Enable non-blocking mode for a socket */
bool SetSocketNonBlocking(const SOCKET& hSocket);
/** Return readable error string for a network error code */
std::string NetworkErrorString(int err);