… | |
… | |
460 | |
460 | |
461 | While nominally embeddable in other event loops, this doesn't work |
461 | While nominally embeddable in other event loops, this doesn't work |
462 | everywhere, so you might need to test for this. And since it is broken |
462 | everywhere, so you might need to test for this. And since it is broken |
463 | almost everywhere, you should only use it when you have a lot of sockets |
463 | almost everywhere, you should only use it when you have a lot of sockets |
464 | (for which it usually works), by embedding it into another event loop |
464 | (for which it usually works), by embedding it into another event loop |
465 | (e.g. C<EVBACKEND_SELECT> or C<EVBACKEND_POLL>) and, did I mention it, |
465 | (e.g. C<EVBACKEND_SELECT> or C<EVBACKEND_POLL> (but C<poll> is of course |
466 | using it only for sockets. |
466 | also broken on OS X)) and, did I mention it, using it only for sockets. |
467 | |
467 | |
468 | This backend maps C<EV_READ> into an C<EVFILT_READ> kevent with |
468 | This backend maps C<EV_READ> into an C<EVFILT_READ> kevent with |
469 | C<NOTE_EOF>, and C<EV_WRITE> into an C<EVFILT_WRITE> kevent with |
469 | C<NOTE_EOF>, and C<EV_WRITE> into an C<EVFILT_WRITE> kevent with |
470 | C<NOTE_EOF>. |
470 | C<NOTE_EOF>. |
471 | |
471 | |
… | |
… | |
1619 | |
1619 | |
1620 | =over 4 |
1620 | =over 4 |
1621 | |
1621 | |
1622 | =item ev_periodic_init (ev_periodic *, callback, ev_tstamp at, ev_tstamp interval, reschedule_cb) |
1622 | =item ev_periodic_init (ev_periodic *, callback, ev_tstamp at, ev_tstamp interval, reschedule_cb) |
1623 | |
1623 | |
1624 | =item ev_periodic_set (ev_periodic *, ev_tstamp after, ev_tstamp repeat, reschedule_cb) |
1624 | =item ev_periodic_set (ev_periodic *, ev_tstamp at, ev_tstamp interval, reschedule_cb) |
1625 | |
1625 | |
1626 | Lots of arguments, lets sort it out... There are basically three modes of |
1626 | Lots of arguments, lets sort it out... There are basically three modes of |
1627 | operation, and we will explain them from simplest to most complex: |
1627 | operation, and we will explain them from simplest to most complex: |
1628 | |
1628 | |
1629 | =over 4 |
1629 | =over 4 |
… | |
… | |
1671 | ignored. Instead, each time the periodic watcher gets scheduled, the |
1671 | ignored. Instead, each time the periodic watcher gets scheduled, the |
1672 | reschedule callback will be called with the watcher as first, and the |
1672 | reschedule callback will be called with the watcher as first, and the |
1673 | current time as second argument. |
1673 | current time as second argument. |
1674 | |
1674 | |
1675 | NOTE: I<This callback MUST NOT stop or destroy any periodic watcher, |
1675 | NOTE: I<This callback MUST NOT stop or destroy any periodic watcher, |
1676 | ever, or make ANY event loop modifications whatsoever>. |
1676 | ever, or make ANY other event loop modifications whatsoever>. |
1677 | |
1677 | |
1678 | If you need to stop it, return C<now + 1e30> (or so, fudge fudge) and stop |
1678 | If you need to stop it, return C<now + 1e30> (or so, fudge fudge) and stop |
1679 | it afterwards (e.g. by starting an C<ev_prepare> watcher, which is the |
1679 | it afterwards (e.g. by starting an C<ev_prepare> watcher, which is the |
1680 | only event loop modification you are allowed to do). |
1680 | only event loop modification you are allowed to do). |
1681 | |
1681 | |
… | |
… | |
2012 | the process. The exception are C<ev_stat> watchers - those call C<stat |
2012 | the process. The exception are C<ev_stat> watchers - those call C<stat |
2013 | ()>, which is a synchronous operation. |
2013 | ()>, which is a synchronous operation. |
2014 | |
2014 | |
2015 | For local paths, this usually doesn't matter: unless the system is very |
2015 | For local paths, this usually doesn't matter: unless the system is very |
2016 | busy or the intervals between stat's are large, a stat call will be fast, |
2016 | busy or the intervals between stat's are large, a stat call will be fast, |
2017 | as the path data is suually in memory already (except when starting the |
2017 | as the path data is usually in memory already (except when starting the |
2018 | watcher). |
2018 | watcher). |
2019 | |
2019 | |
2020 | For networked file systems, calling C<stat ()> can block an indefinite |
2020 | For networked file systems, calling C<stat ()> can block an indefinite |
2021 | time due to network issues, and even under good conditions, a stat call |
2021 | time due to network issues, and even under good conditions, a stat call |
2022 | often takes multiple milliseconds. |
2022 | often takes multiple milliseconds. |
… | |
… | |
2179 | |
2179 | |
2180 | =head3 Watcher-Specific Functions and Data Members |
2180 | =head3 Watcher-Specific Functions and Data Members |
2181 | |
2181 | |
2182 | =over 4 |
2182 | =over 4 |
2183 | |
2183 | |
2184 | =item ev_idle_init (ev_signal *, callback) |
2184 | =item ev_idle_init (ev_idle *, callback) |
2185 | |
2185 | |
2186 | Initialises and configures the idle watcher - it has no parameters of any |
2186 | Initialises and configures the idle watcher - it has no parameters of any |
2187 | kind. There is a C<ev_idle_set> macro, but using it is utterly pointless, |
2187 | kind. There is a C<ev_idle_set> macro, but using it is utterly pointless, |
2188 | believe me. |
2188 | believe me. |
2189 | |
2189 | |
… | |
… | |
2428 | some fds have to be watched and handled very quickly (with low latency), |
2428 | some fds have to be watched and handled very quickly (with low latency), |
2429 | and even priorities and idle watchers might have too much overhead. In |
2429 | and even priorities and idle watchers might have too much overhead. In |
2430 | this case you would put all the high priority stuff in one loop and all |
2430 | this case you would put all the high priority stuff in one loop and all |
2431 | the rest in a second one, and embed the second one in the first. |
2431 | the rest in a second one, and embed the second one in the first. |
2432 | |
2432 | |
2433 | As long as the watcher is active, the callback will be invoked every time |
2433 | As long as the watcher is active, the callback will be invoked every |
2434 | there might be events pending in the embedded loop. The callback must then |
2434 | time there might be events pending in the embedded loop. The callback |
2435 | call C<ev_embed_sweep (mainloop, watcher)> to make a single sweep and invoke |
2435 | must then call C<ev_embed_sweep (mainloop, watcher)> to make a single |
2436 | their callbacks (you could also start an idle watcher to give the embedded |
2436 | sweep and invoke their callbacks (the callback doesn't need to invoke the |
2437 | loop strictly lower priority for example). You can also set the callback |
2437 | C<ev_embed_sweep> function directly, it could also start an idle watcher |
2438 | to C<0>, in which case the embed watcher will automatically execute the |
2438 | to give the embedded loop strictly lower priority for example). |
2439 | embedded loop sweep. |
|
|
2440 | |
2439 | |
2441 | As long as the watcher is started it will automatically handle events. The |
2440 | You can also set the callback to C<0>, in which case the embed watcher |
2442 | callback will be invoked whenever some events have been handled. You can |
2441 | will automatically execute the embedded loop sweep whenever necessary. |
2443 | set the callback to C<0> to avoid having to specify one if you are not |
|
|
2444 | interested in that. |
|
|
2445 | |
2442 | |
2446 | Also, there have not currently been made special provisions for forking: |
2443 | Fork detection will be handled transparently while the C<ev_embed> watcher |
2447 | when you fork, you not only have to call C<ev_loop_fork> on both loops, |
2444 | is active, i.e., the embedded loop will automatically be forked when the |
2448 | but you will also have to stop and restart any C<ev_embed> watchers |
2445 | embedding loop forks. In other cases, the user is responsible for calling |
2449 | yourself - but you can use a fork watcher to handle this automatically, |
2446 | C<ev_loop_fork> on the embedded loop. |
2450 | and future versions of libev might do just that. |
|
|
2451 | |
2447 | |
2452 | Unfortunately, not all backends are embeddable: only the ones returned by |
2448 | Unfortunately, not all backends are embeddable: only the ones returned by |
2453 | C<ev_embeddable_backends> are, which, unfortunately, does not include any |
2449 | C<ev_embeddable_backends> are, which, unfortunately, does not include any |
2454 | portable one. |
2450 | portable one. |
2455 | |
2451 | |
… | |
… | |
3233 | function is hiding in (often F<-lrt>). See also C<EV_USE_CLOCK_SYSCALL>. |
3229 | function is hiding in (often F<-lrt>). See also C<EV_USE_CLOCK_SYSCALL>. |
3234 | |
3230 | |
3235 | =item EV_USE_REALTIME |
3231 | =item EV_USE_REALTIME |
3236 | |
3232 | |
3237 | If defined to be C<1>, libev will try to detect the availability of the |
3233 | If defined to be C<1>, libev will try to detect the availability of the |
3238 | real-time clock option at compile time (and assume its availability at |
3234 | real-time clock option at compile time (and assume its availability |
3239 | runtime if successful). Otherwise no use of the real-time clock option will |
3235 | at runtime if successful). Otherwise no use of the real-time clock |
3240 | be attempted. This effectively replaces C<gettimeofday> by C<clock_get |
3236 | option will be attempted. This effectively replaces C<gettimeofday> |
3241 | (CLOCK_REALTIME, ...)> and will not normally affect correctness. See the |
3237 | by C<clock_get (CLOCK_REALTIME, ...)> and will not normally affect |
3242 | note about libraries in the description of C<EV_USE_MONOTONIC>, though. |
3238 | correctness. See the note about libraries in the description of |
|
|
3239 | C<EV_USE_MONOTONIC>, though. Defaults to the opposite value of |
|
|
3240 | C<EV_USE_CLOCK_SYSCALL>. |
3243 | |
3241 | |
3244 | =item EV_USE_CLOCK_SYSCALL |
3242 | =item EV_USE_CLOCK_SYSCALL |
3245 | |
3243 | |
3246 | If defined to be C<1>, libev will try to use a direct syscall instead |
3244 | If defined to be C<1>, libev will try to use a direct syscall instead |
3247 | of calling the system-provided C<clock_gettime> function. This option |
3245 | of calling the system-provided C<clock_gettime> function. This option |