| 2295 | } |
| 2296 | |
| 2297 | inline ssize_t select_write(socket_t sock, time_t sec, time_t usec) { |
| 2298 | #ifdef CPPHTTPLIB_USE_POLL |
| 2299 | struct pollfd pfd_read; |
| 2300 | pfd_read.fd = sock; |
| 2301 | pfd_read.events = POLLOUT; |
| 2302 | |
| 2303 | auto timeout = static_cast<int>(sec * 1000 + usec / 1000); |
| 2304 | |
| 2305 | return handle_EINTR([&]() { return poll(&pfd_read, 1, timeout); }); |
| 2306 | #else |
| 2307 | #ifndef _WIN32 |
| 2308 | if (sock >= FD_SETSIZE) { return 1; } |
| 2309 | #endif |
| 2310 | |
| 2311 | fd_set fds; |
| 2312 | FD_ZERO(&fds); |
| 2313 | FD_SET(sock, &fds); |
| 2314 | |
| 2315 | timeval tv; |
| 2316 | tv.tv_sec = static_cast<long>(sec); |
| 2317 | tv.tv_usec = static_cast<decltype(tv.tv_usec)>(usec); |
| 2318 | |
| 2319 | return handle_EINTR([&]() { |
| 2320 | return select(static_cast<int>(sock + 1), nullptr, &fds, nullptr, &tv); |
| 2321 | }); |
| 2322 | #endif |
| 2323 | } |
| 2324 | |
| 2325 | inline Error wait_until_socket_is_ready(socket_t sock, time_t sec, |
| 2326 | time_t usec) { |
no test coverage detected