#ifndef ERIS_POLL_H
#define ERIS_POLL_H
#include <sigc++/signal.h>
// Forward declaration from skstream
class basic_socket_stream;
namespace Eris {
class PollData
{
public:
PollData() {}
virtual ~PollData() {}
virtual bool isReady(const basic_socket_stream*) = 0;
};
class Poll
{
public:
Poll() {}
virtual ~Poll() {}
enum Check {
READ = 1,
WRITE = 2,
MASK = READ | WRITE
};
virtual void addStream(const basic_socket_stream*, Check = READ) = 0;
virtual void changeStream(const basic_socket_stream*, Check) = 0;
virtual void removeStream(const basic_socket_stream*) = 0;
static Poll& instance();
static void setInstance(Poll*);
static void newTimedEvent() {new_timeout_ = true;}
sigc::signal<void, PollData&> Ready;
private:
Poll(const Poll&);
static Poll *_inst;
protected:
static bool new_timeout_;
};
} // namespace Eris
#endif // ERIS_POLL_H
syntax highlighted by Code2HTML, v. 0.9.1