From e7c3b04e4f9293d01f494bafb84243b02abb22ad Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Wed, 16 May 2007 15:50:31 -0400 Subject: [PATCH] add ply_fd_has_data and ply_fd_can_take_data apis The calls in this commit just do a one-off poll of the passed in fd to see if the fd is read for read or write call --- src/ply-utils.c | 29 +++++++++++++++++++++++++++++ src/ply-utils.h | 2 ++ 2 files changed, 31 insertions(+) diff --git a/src/ply-utils.c b/src/ply-utils.c index 5db4a7fd..b793c614 100644 --- a/src/ply-utils.c +++ b/src/ply-utils.c @@ -5,6 +5,7 @@ #include #include #include +#include #include #include @@ -70,3 +71,31 @@ ply_write (int fd, return bytes_left_to_write == 0; } + +bool +ply_fd_has_data (int fd) +{ + struct pollfd poll_data; + int result; + + poll_data.fd = fd; + poll_data.events = POLLIN | POLLPRI; + poll_data.revents = 0; + result = poll (&poll_data, 1, 10); + + return result == 1; +} + +bool +ply_fd_can_take_data (int fd) +{ + struct pollfd poll_data; + int result; + + poll_data.fd = fd; + poll_data.events = POLLOUT; + poll_data.revents = 0; + result = poll (&poll_data, 1, 10); + + return result == 1; +} diff --git a/src/ply-utils.h b/src/ply-utils.h index 8b2ceee3..32bf6186 100644 --- a/src/ply-utils.h +++ b/src/ply-utils.h @@ -44,6 +44,8 @@ bool ply_open_unidirectional_pipe (int *sender_fd, bool ply_write (int fd, const void *buffer, size_t number_of_bytes); +bool ply_fd_has_data (int fd); +bool ply_fd_can_take_data (int fd); #endif #endif /* PLY_UTILS_H */