Main Page   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members  

Poll.h

00001 #ifndef ERIS_POLL_H
00002 #define ERIS_POLL_H 
00003 
00004 #include <sigc++/object.h>
00005 #if SIGC_MAJOR_VERSION == 1 && SIGC_MINOR_VERSION == 0
00006 #include <sigc++/basic_signal.h>
00007 #else
00008 #include <sigc++/signal.h>
00009 #endif
00010 
00011 // Forward declaration from skstream
00012 class basic_socket_stream;
00013 
00014 namespace Eris {
00015 
00016 class PollData
00017 {
00018 public:
00019         PollData() {}
00020         virtual ~PollData() {}
00021 
00022         virtual bool isReady(const basic_socket_stream*) = 0;
00023 };
00024 
00025 class Poll : public SigC::Signal1<void,PollData&>
00026 {
00027 public:
00028         Poll() : new_timeout_(false) {}
00029         virtual ~Poll() {}
00030 
00031         enum Check {
00032                 READ = 1,
00033                 WRITE = 2,
00034                 MASK = READ | WRITE
00035         };
00036 
00037         virtual void addStream(const basic_socket_stream*, Check = READ) = 0;
00038         virtual void changeStream(const basic_socket_stream*, Check) = 0;
00039         virtual void removeStream(const basic_socket_stream*) = 0;
00040 
00041         static Poll& instance();
00042         static void setInstance(Poll*);
00043 
00044         void newTimeout() {new_timeout_ = true;}
00045 
00046 private:
00047         Poll(const Poll&);
00048         static Poll *_inst;
00049 protected:
00050         bool new_timeout_;
00051 };
00052 
00053 } // namespace Eris
00054 
00055 #endif // ERIS_POLL_H

Generated on Thu May 22 08:01:04 2003 for Eris by doxygen1.3-rc3