| 2348 | } |
| 2349 | |
| 2350 | inline ssize_t select_write(socket_t sock, time_t sec, time_t usec) { |
| 2351 | #ifdef CPPHTTPLIB_USE_POLL |
| 2352 | struct pollfd pfd_read; |
| 2353 | pfd_read.fd = sock; |
| 2354 | pfd_read.events = POLLOUT; |
| 2355 | |
| 2356 | auto timeout = static_cast<int>(sec * 1000 + usec / 1000); |
| 2357 | |
| 2358 | return handle_EINTR([&]() { return poll(&pfd_read, 1, timeout); }); |
| 2359 | #else |
| 2360 | #ifndef _WIN32 |
| 2361 | if (sock >= FD_SETSIZE) { return 1; } |
| 2362 | #endif |
| 2363 | |
| 2364 | fd_set fds; |
| 2365 | FD_ZERO(&fds); |
| 2366 | FD_SET(sock, &fds); |
| 2367 | |
| 2368 | timeval tv; |
| 2369 | tv.tv_sec = static_cast<long>(sec); |
| 2370 | tv.tv_usec = static_cast<decltype(tv.tv_usec)>(usec); |
| 2371 | |
| 2372 | return handle_EINTR([&]() { |
| 2373 | return select(static_cast<int>(sock + 1), nullptr, &fds, nullptr, &tv); |
| 2374 | }); |
| 2375 | #endif |
| 2376 | } |
| 2377 | |
| 2378 | inline Error wait_until_socket_is_ready(socket_t sock, time_t sec, |
| 2379 | time_t usec) { |
no test coverage detected