Eris
1.3.19
|
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; 00008 00009 namespace Eris { 00010 00011 class PollData 00012 { 00013 public: 00014 PollData() {} 00015 virtual ~PollData() {} 00016 00017 virtual bool isReady(const basic_socket*) = 0; 00018 }; 00019 00020 class Poll 00021 { 00022 public: 00023 Poll() {} 00024 virtual ~Poll() {} 00025 00026 static const int 00027 READ = 1, 00028 WRITE = 2, 00029 EXCEPT = 4, 00030 MASK = READ | WRITE | EXCEPT; 00031 typedef int Check; 00032 00033 virtual int maxStreams() const = 0; 00034 virtual int maxConnectingStreams() const = 0; 00035 00036 virtual void addStream(const basic_socket*, Check = READ) = 0; 00037 virtual void changeStream(const basic_socket*, Check) = 0; 00038 virtual void removeStream(const basic_socket*) = 0; 00039 00040 static Poll& instance(); 00041 static void setInstance(Poll*); 00042 00043 static void newTimedEvent() {new_timeout_ = true;} 00044 00045 sigc::signal<void, PollData&> Ready; 00046 private: 00047 Poll(const Poll&); 00048 static Poll *_inst; 00049 protected: 00050 static bool new_timeout_; 00051 }; 00052 00053 } // namespace Eris 00054 00055 #endif // ERIS_POLL_H