-#ifndef EVENTDISPATCHER_H_
-#define EVENTDISPATCHER_H_
+#ifndef MSP_IO_EVENTDISPATCHER_H_
+#define MSP_IO_EVENTDISPATCHER_H_
#include <sigc++/connection.h>
#include <sigc++/trackable.h>
+#include <msp/time/timedelta.h>
#include "poll.h"
namespace Msp {
private:
struct Slot
{
- Base *obj;
+ EventObject *obj;
sigc::connection evch_conn;
sigc::connection del_conn;
- Slot(Base *o): obj(o) { }
+ Slot(EventObject *o): obj(o) { }
};
- typedef std::map<Base *, Slot> SlotMap;
+ typedef std::map<EventObject *, Slot> SlotMap;
Poller poller;
SlotMap objects;
public:
EventDispatcher();
+ ~EventDispatcher();
- void add(Base &);
- void remove(Base &);
+ void add(EventObject &);
+ void remove(EventObject &);
/** Checks for and dispatches events. If there are no events available,
blocks until there are. */
void tick(const Time::TimeDelta &);
private:
- void object_events_changed(PollEvent, Base *);
- void object_deleted(Base *);
+ void object_events_changed(PollEvent, EventObject *);
+ void object_deleted(EventObject *);
void dispatch();
};