--- gvpe/src/iom.h 2003/03/21 21:21:02 1.3 +++ gvpe/src/iom.h 2003/03/21 23:17:01 1.4 @@ -37,6 +37,8 @@ vector pfs; vector iow; vector tw; // actually a heap + + void idle_cb (tstamp &ts); time_watcher *idle; public: // register a watcher @@ -90,9 +92,9 @@ return prxy->call (obj, meth, arg); } - void stop () + R operator ()(A arg) { - iom.unreg (this); + return call (arg); } }; @@ -107,8 +109,14 @@ iom.reg (fd, events, this); } + void stop () + { + iom.unreg (this); + } }; +#define TSTAMP_CANCEL -1. + struct time_watcher : callback { tstamp at; @@ -118,16 +126,29 @@ { } void set (tstamp when); + void trigger (); - void trigger () + void operator ()() { - call (at); + trigger (); } - void start (tstamp when = NOW) + void start (); + void start (tstamp when) { set (when); } + + void stop () + { + iom.unreg (this); + } + + void reset (tstamp when = TSTAMP_CANCEL) + { + stop (); + at = when; + } }; #endif