Eris 1.3.16
|
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