Main Page | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Class Members

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 : public SigC::Signal1<void,PollData&>
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 newTimeout() {new_timeout_ = true;}
00040 
00041 private:
00042         Poll(const Poll&);
00043         static Poll *_inst;
00044 protected:
00045         static bool new_timeout_;
00046 };
00047 
00048 } // namespace Eris
00049 
00050 #endif // ERIS_POLL_H

Generated on Sun Sep 4 14:14:04 2005 for Eris by  doxygen 1.4.4