crossroads

Git mirror of https://crossroads.e-tunity.com/
git clone git://git.finwo.net/app/crossroads
Log | Files | Refs | LICENSE

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