136
136
void start (int fd_, short events_) { set (fd_, events_); io_manager::reg (*this); }
137
137
void stop () { io_manager::unreg (*this); }
139
template<class O1, class O2>
140
io_watcher (O1 *object, void (O2::*method) (io_watcher &, short))
141
: callback2<void, io_watcher &, short> (object, method)
139
template<class O, class M>
140
io_watcher (O object, M method)
141
: callback<void (io_watcher &, short)> (object, method)
143
143
~io_watcher () { stop (); }
148
struct time_watcher : watcher, callback1<void, time_watcher &> {
148
struct time_watcher : watcher, callback<void (time_watcher &)> {
156
156
void start (tstamp when) { set (when); io_manager::reg (*this); }
157
157
void stop () { io_manager::unreg (*this); }
159
template<class O1, class O2>
160
time_watcher (O1 *object, void (O2::*method) (time_watcher &))
161
: callback1<void, time_watcher &> (object, method), at (0)
159
template<class O, class M>
160
time_watcher (O object, M method)
161
: callback<void (time_watcher &)> (object, method), at (0)
163
163
~time_watcher () { stop (); }
168
168
// run before checking for new events
169
struct check_watcher : watcher, callback1<void, check_watcher &> {
169
struct check_watcher : watcher, callback<void (check_watcher &)> {
170
170
void start () { io_manager::reg (*this); }
171
171
void stop () { io_manager::unreg (*this); }
173
template<class O1, class O2>
174
check_watcher (O1 *object, void (O2::*method) (check_watcher &))
175
: callback1<void, check_watcher &> (object, method)
173
template<class O, class M>
174
check_watcher (O object, M method)
175
: callback<void (check_watcher &)> (object, method)
177
177
~check_watcher () { stop (); }
182
182
// run after checking for any i/o, but before waiting
183
struct idle_watcher : watcher, callback1<void, idle_watcher &> {
183
struct idle_watcher : watcher, callback<void (idle_watcher &)> {
184
184
void start () { io_manager::reg (*this); }
185
185
void stop () { io_manager::unreg (*this); }
187
template<class O1, class O2>
188
idle_watcher (O1 *object, void (O2::*method) (idle_watcher &))
189
: callback1<void, idle_watcher &> (object, method)
187
template<class O, class M>
188
idle_watcher (O object, M method)
189
: callback<void (idle_watcher &)> (object, method)
191
191
~idle_watcher () { stop (); }
196
struct sig_watcher : watcher, callback1<void, sig_watcher &> {
196
struct sig_watcher : watcher, callback<void (sig_watcher &)> {
199
199
void start (int signum);
200
200
void stop () { io_manager::unreg (*this); }
202
template<class O1, class O2>
203
sig_watcher (O1 *object, void (O2::*method) (sig_watcher &))
204
: callback1<void, sig_watcher &> (object, method), signum (0)
202
template<class O, class M>
203
sig_watcher (O object, M method)
204
: callback<void(sig_watcher &)> (object, method), signum (0)
206
206
~sig_watcher () { stop (); }
211
struct child_watcher : watcher, callback2<void, child_watcher &, int> {
211
struct child_watcher : watcher, callback<void (child_watcher &, int)> {
212
212
int /*pid_t*/ pid;
214
214
void start (int pid) { this->pid = pid; io_manager::reg (*this); }
215
215
void stop () { io_manager::unreg (*this); }
217
template<class O1, class O2>
218
child_watcher (O1 *object, void (O2::*method) (child_watcher &, int status))
219
: callback2<void, child_watcher &, int> (object, method), pid (0)
217
template<class O, class M>
218
child_watcher (O object, M method)
219
: callback<void (child_watcher &, int)> (object, method), pid (0)
221
221
~child_watcher () { stop (); }