Poll.h

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

Generated on Wed Jan 31 07:41:55 2007 for Eris by  doxygen 1.4.7