/******************************************************************************* * BPoll.h File poll class * T.Barnaby, BEAM Ltd, 01/4/05 ******************************************************************************* */ #ifndef BPOLL_H #define BPOLL_H 1 #include <BList.h> #include <BError.h> #include <sys/poll.h> /// \brief This class provides an interface for polling a number of file descriptors. /// It uses round robin polling class BPoll { public: typedef struct pollfd PollFd; BPoll(); ~BPoll(); void append(int fd, int events = POLLIN|POLLERR|POLLHUP|POLLNVAL); ///< Append a file descriptor to polling list void delFd(int fd); ///< Remove a file descriptor from polling list BError doPoll(int& fd, int timeoutUs = -1); ///< Perform polling operation int getPollFdsNum(); PollFd* getPollFds(); void clear(); private: int nextFd(int i); int ofdsNum; ///< The number of FD's in list PollFd* ofds; ///< The list of poll fd's int ofdsNext; ///< The next list entry for round robin polling }; #endif