Eris  1.3.23
Poll.h
1 #ifndef ERIS_POLL_H
2 #define ERIS_POLL_H
3 
4 #include <sigc++/signal.h>
5 
6 // Forward declaration from skstream
7 class basic_socket;
8 
9 namespace Eris {
10 
11 class PollData
12 {
13 public:
14  PollData() {}
15  virtual ~PollData() {}
16 
17  virtual bool isReady(const basic_socket*) = 0;
18 };
19 
20 class Poll
21 {
22 public:
23  Poll() {}
24  virtual ~Poll() {}
25 
26  static const int
27  READ = 1,
28  WRITE = 2,
29  EXCEPT = 4,
30  MASK = READ | WRITE | EXCEPT;
31  typedef int Check;
32 
33  virtual int maxStreams() const = 0;
34  virtual int maxConnectingStreams() const = 0;
35 
36  virtual void addStream(const basic_socket*, Check = READ) = 0;
37  virtual void changeStream(const basic_socket*, Check) = 0;
38  virtual void removeStream(const basic_socket*) = 0;
39 
40  static Poll& instance();
41  static void setInstance(Poll*);
42 
43  static void newTimedEvent() {new_timeout_ = true;}
44 
45  sigc::signal<void, PollData&> Ready;
46 private:
47  Poll(const Poll&);
48  static Poll *_inst;
49 protected:
50  static bool new_timeout_;
51 };
52 
53 } // namespace Eris
54 
55 #endif // ERIS_POLL_H
Eris::PollData
Definition: Poll.h:12
Eris::Poll
Definition: Poll.h:21