--- gvpe/src/iom.h 2003/04/02 05:15:00 1.9 +++ gvpe/src/iom.h 2003/04/02 21:02:25 1.10 @@ -35,16 +35,16 @@ class io_manager { vector pfs; - vector iow; + vector iow; vector tw; // actually a heap - void idle_cb (tstamp &ts); time_watcher *idle; + void idle_cb (time_watcher &w); time_watcher *idle; public: void reschedule_time_watchers (); // register a watcher - void reg (int fd, short events, io_watcher *w); + void reg (io_watcher *w); void unreg (io_watcher *w); void reg (time_watcher *w); void unreg (time_watcher *w); @@ -57,10 +57,13 @@ extern io_manager iom; -struct io_watcher : callback2 { +struct io_watcher : callback2 { + int fd; + short events; + template - io_watcher (O1 *object, void (O2::*method)(int fd, short revents)) - : callback2(object,method) + io_watcher (O1 *object, void (O2::*method)(io_watcher &, short)) + : callback2(object,method) { } ~io_watcher () @@ -68,9 +71,11 @@ iom.unreg (this); } - void start (int fd, short events) + void start (int fd_, short events_) { - iom.reg (fd, events, this); + fd = fd_; + events = events_; + iom.reg (this); } void stop () @@ -81,13 +86,13 @@ #define TSTAMP_CANCEL -1. -struct time_watcher : callback1 { +struct time_watcher : callback1 { bool registered; // already registered? tstamp at; template - time_watcher (O1 *object, void (O2::*method)(tstamp &)) - : callback1(object,method) + time_watcher (O1 *object, void (O2::*method)(time_watcher &)) + : callback1(object,method) , registered(false) { }