diff options
Diffstat (limited to 'libavformat/network.h')
-rw-r--r-- | libavformat/network.h | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/libavformat/network.h b/libavformat/network.h index 58a8e80e72..74e6f0bbcc 100644 --- a/libavformat/network.h +++ b/libavformat/network.h @@ -22,6 +22,7 @@ #define AVFORMAT_NETWORK_H #include "config.h" +#include "os_support.h" #if HAVE_WINSOCK2_H #include <winsock2.h> @@ -55,6 +56,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 +72,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 |