Poll.h
00001 #ifndef ERIS_POLL_H
00002 #define ERIS_POLL_H
00003
00004 #include <sigc++/signal.h>
00005
00006
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 }
00049
00050 #endif // ERIS_POLL_H
Generated on Tue Jul 27 21:00:43 2004 for Eris by
1.3.7