fdset (1093B)
1 #ifndef _FDSET_ 2 #define _FDSET_ 3 4 #include "../sys/sys" 5 #include "../error/error" 6 #include "../config/config" 7 #include "../SocketHandling/socket/socket" 8 9 using namespace std; 10 11 class Fdset { 12 public: 13 Fdset(int t); 14 15 int timeout() const { return tsec; } 16 void timeout(int t) { tsec = t; } 17 18 void add(int fd) { set.push_back(fd); } 19 void add(Socket &s) { set.push_back(s.fd()); } 20 21 unsigned size() const { return set.size(); } 22 23 int fd(unsigned index) { return set[index]; } 24 25 double wait(bool wait_read, bool wait_write); 26 double wait_rw() { return wait(true, true); } 27 double wait_r() { return wait(true, false); } 28 double wait_w() { return wait(false, true); } 29 30 bool readable(int fd) { return FD_ISSET(fd, &readset); } 31 bool readable(Socket &s) { return FD_ISSET(s.fd(), &readset); } 32 bool writeable(int fd) { return FD_ISSET(fd, &writeset); } 33 bool writeable(Socket &s) { return FD_ISSET(s.fd(), &writeset); } 34 35 36 private: 37 int tsec; 38 fd_set readset, writeset, exceptset; 39 vector<int> set; 40 }; 41 42 #endif