| 1163 | |
| 1164 | #if defined(_win_) |
| 1165 | static inline void SetNonBlockSocket(SOCKET fd, int value) { |
| 1166 | unsigned long inbuf = value; |
| 1167 | unsigned long outbuf = 0; |
| 1168 | DWORD written = 0; |
| 1169 | |
| 1170 | if (!inbuf) { |
| 1171 | WSAEventSelect(fd, nullptr, 0); |
| 1172 | } |
| 1173 | |
| 1174 | if (WSAIoctl(fd, FIONBIO, &inbuf, sizeof(inbuf), &outbuf, sizeof(outbuf), &written, 0, 0) == SOCKET_ERROR) { |
| 1175 | ythrow TSystemError() << "can not set non block socket state"; |
| 1176 | } |
| 1177 | } |
| 1178 | |
| 1179 | static inline bool IsNonBlockSocket(SOCKET fd) { |
| 1180 | unsigned long buf = 0; |