diff options
Diffstat (limited to 'libavformat/network.h')
-rw-r--r-- | libavformat/network.h | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/libavformat/network.h b/libavformat/network.h index 27bebb3505..6943bc6765 100644 --- a/libavformat/network.h +++ b/libavformat/network.h @@ -55,6 +55,10 @@ static inline int ff_neterrno() { #include <arpa/inet.h> #endif +#if HAVE_POLL_H +#include <poll.h> +#endif + int ff_socket_nonblock(int socket, int enable); static inline int ff_network_init(void) @@ -67,6 +71,15 @@ static inline int ff_network_init(void) return 1; } +static inline int ff_network_wait_fd(int fd, int write) +{ + int ev = write ? POLLOUT : POLLIN; + struct pollfd p = { .fd = fd, .events = ev, .revents = 0 }; + int ret; + ret = poll(&p, 1, 100); + return ret < 0 ? ff_neterrno() : p.revents & ev ? 0 : AVERROR(EAGAIN); +} + static inline void ff_network_close(void) { #if HAVE_WINSOCK2_H |