00001 #ifndef IONFLUX_TOOLS_FDSET
00002 #define IONFLUX_TOOLS_FDSET
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029 #include <string>
00030 #include <iostream>
00031 #include <vector>
00032 #include <sys/select.h>
00033
00034 namespace Ionflux
00035 {
00036
00037 namespace Tools
00038 {
00039
00047 class FDSet
00048 {
00049 protected:
00051 fd_set masterRead;
00053 fd_set masterWrite;
00055 fd_set masterExcept;
00057 fd_set activeRead;
00059 fd_set activeWrite;
00061 fd_set activeExcept;
00063 timeval *timeout;
00064
00065 public:
00070 FDSet();
00071
00076 virtual ~FDSet();
00077
00088 virtual void addFD(int fd);
00089
00096 virtual void addReadFD(int fd);
00097
00104 virtual void addWriteFD(int fd);
00105
00112 virtual void addExceptFD(int fd);
00113
00124 virtual void removeFD(int fd);
00125
00132 virtual void removeReadFD(int fd);
00133
00140 virtual void removeWriteFD(int fd);
00141
00148 virtual void removeExceptFD(int fd);
00149
00165 virtual bool isSet(int fd);
00166
00177 virtual bool isSetRead(int fd);
00178
00189 virtual bool isSetWrite(int fd);
00190
00201 virtual bool isSetExcept(int fd);
00202
00209 virtual int select();
00210
00218 virtual void setTimeout(int secs, int usecs);
00219
00221 virtual void clear();
00222
00224 virtual void clearRead();
00225
00227 virtual void clearWrite();
00228
00230 virtual void clearExcept();
00231 };
00232
00233 }
00234
00235 }
00236
00240 #endif