]> git.tdb.fi Git - libs/core.git/blobdiff - source/io/eventdispatcher.h
Rewrite BufferedFile as a standalone class
[libs/core.git] / source / io / eventdispatcher.h
index 7e89d4739e845f0e0c180845ffedb43184eefd9f..25455ab842f510f10e5c18f14e28779de8467b5f 100644 (file)
@@ -1,8 +1,9 @@
-#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 {
@@ -17,23 +18,24 @@ class EventDispatcher: public sigc::trackable
 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. */
@@ -44,8 +46,8 @@ public:
        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();
 };