--- gvpe/src/iom.h 2003/04/02 21:02:25 1.10 +++ gvpe/src/iom.h 2003/04/05 02:32:40 1.12 @@ -21,6 +21,8 @@ #include +#include + #include #include "callback.h" @@ -55,26 +57,31 @@ ~io_manager (); }; -extern io_manager iom; +extern io_manager iom; // a singleton, together with it's construction/destruction problems. struct io_watcher : callback2 { + bool registered; // already registered? int fd; short events; template io_watcher (O1 *object, void (O2::*method)(io_watcher &, short)) : callback2(object,method) + , registered(false) { } - ~io_watcher () + ~io_watcher (); + + void set(int fd_, short events_); + + void set(short events_) { - iom.unreg (this); + set (fd, events_); } void start (int fd_, short events_) { - fd = fd_; - events = events_; + set (fd_, events_); iom.reg (this); } @@ -96,10 +103,7 @@ , registered(false) { } - ~time_watcher () - { - iom.unreg (this); - } + ~time_watcher (); void set (tstamp when); void trigger (); @@ -109,10 +113,15 @@ trigger (); } - void start (); + void start () + { + iom.reg (this); + } + void start (tstamp when) { set (when); + iom.reg (this); } void stop ()