1 | /* |
1 | /* |
2 | iom.C -- generic I/O multiplexor |
2 | iom.C -- generic I/O multiplexer |
3 | Copyright (C) 2003, 2004 Marc Lehmann <pcg@goof.com> |
3 | Copyright (C) 2003, 2004 Marc Lehmann <pcg@goof.com> |
4 | |
4 | |
5 | This program is free software; you can redistribute it and/or modify |
5 | This program is free software; you can redistribute it and/or modify |
6 | it under the terms of the GNU General Public License as published by |
6 | it under the terms of the GNU General Public License as published by |
7 | the Free Software Foundation; either version 2 of the License, or |
7 | the Free Software Foundation; either version 2 of the License, or |
… | |
… | |
283 | activity = false; |
283 | activity = false; |
284 | |
284 | |
285 | for (int i = tw.size (); i--; ) |
285 | for (int i = tw.size (); i--; ) |
286 | if (!tw[i]) |
286 | if (!tw[i]) |
287 | tw.erase_unordered (i); |
287 | tw.erase_unordered (i); |
288 | else if (tw[i]->at <= NOW + IOM_ACCURACY) |
288 | else if (tw[i]->at <= NOW) |
289 | { |
289 | { |
290 | time_watcher &w = *tw[i]; |
290 | time_watcher &w = *tw[i]; |
291 | |
291 | |
292 | unreg (w); |
292 | unreg (w); |
293 | w.call (w); |
293 | w.call (w); |
… | |
… | |
388 | char ch; |
388 | char ch; |
389 | |
389 | |
390 | while (read (sigpipe[0], &ch, 1) > 0) |
390 | while (read (sigpipe[0], &ch, 1) > 0) |
391 | ; |
391 | ; |
392 | |
392 | |
393 | for (sig_vec **svp = sw.end (); svp-- > sw.begin (); ) |
393 | for (vector<sig_vec *>::iterator svp = sw.end (); svp-- > sw.begin (); ) |
394 | if (*svp && (*svp)->pending) |
394 | if (*svp && (*svp)->pending) |
395 | { |
395 | { |
396 | sig_vec &sv = **svp; |
396 | sig_vec &sv = **svp; |
397 | for (int i = sv.size (); i--; ) |
397 | for (int i = sv.size (); i--; ) |
398 | if (!sv[i]) |
398 | if (!sv[i]) |