ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/EV/README
Revision: 1.38
Committed: Mon Oct 25 11:30:45 2010 UTC (13 years, 6 months ago) by root
Branch: MAIN
CVS Tags: rel-4_01, rel-4_00, rel-4_02
Changes since 1.37: +5 -4 lines
Log Message:
4.00

File Contents

# User Rev Content
1 root 1.1 NAME
2 root 1.6 EV - perl interface to libev, a high performance full-featured event
3     loop
4 root 1.1
5 root 1.2 SYNOPSIS
6 root 1.28 use EV;
7 root 1.33
8     # TIMERS
9    
10     my $w = EV::timer 2, 0, sub {
11 root 1.28 warn "is called after 2s";
12     };
13 root 1.33
14     my $w = EV::timer 2, 2, sub {
15 root 1.28 warn "is called roughly every 2s (repeat = 2)";
16     };
17 root 1.33
18     undef $w; # destroy event watcher again
19    
20     my $w = EV::periodic 0, 60, 0, sub {
21 root 1.28 warn "is called every minute, on the minute, exactly";
22     };
23 root 1.33
24     # IO
25    
26     my $w = EV::io *STDIN, EV::READ, sub {
27 root 1.28 my ($w, $revents) = @_; # all callbacks receive the watcher and event mask
28     warn "stdin is readable, you entered: ", <STDIN>;
29     };
30 root 1.33
31     # SIGNALS
32    
33     my $w = EV::signal 'QUIT', sub {
34 root 1.28 warn "sigquit received\n";
35     };
36 root 1.33
37     # CHILD/PID STATUS CHANGES
38    
39     my $w = EV::child 666, 0, sub {
40 root 1.28 my ($w, $revents) = @_;
41     my $status = $w->rstatus;
42     };
43 root 1.33
44     # STAT CHANGES
45 root 1.28 my $w = EV::stat "/etc/passwd", 10, sub {
46     my ($w, $revents) = @_;
47     warn $w->path, " has changed somehow.\n";
48     };
49 root 1.33
50     # MAINLOOP
51 root 1.28 EV::loop; # loop until EV::unloop is called or all watchers stop
52     EV::loop EV::LOOP_ONESHOT; # block until at least one event could be handled
53     EV::loop EV::LOOP_NONBLOCK; # try to handle same events, but do not block
54 root 1.2
55 root 1.36 BEFORE YOU START USING THIS MODULE
56     If you only need timer, I/O, signal, child and idle watchers and not the
57     advanced functionality of this module, consider using AnyEvent instead,
58     specifically the simplified API described in AE.
59    
60     When used with EV as backend, the AE API is as fast as the native EV
61     API, but your programs/modules will still run with many other event
62     loops.
63    
64 root 1.2 DESCRIPTION
65 root 1.5 This module provides an interface to libev
66 root 1.12 (<http://software.schmorp.de/pkg/libev.html>). While the documentation
67     below is comprehensive, one might also consult the documentation of
68 root 1.30 libev itself (<http://pod.tst.eu/http://cvs.schmorp.de/libev/ev.pod> or
69     perldoc EV::libev) for more subtle details on watcher semantics or some
70     discussion on the available backends, or how to force a specific backend
71     with "LIBEV_FLAGS", or just about in any case because it has much more
72 root 1.25 detailed information.
73    
74     This module is very fast and scalable. It is actually so fast that you
75     can use it through the AnyEvent module, stay portable to other event
76     loops (if you don't rely on any watcher types not available through it)
77     and still be faster than with any other event loop currently supported
78     in Perl.
79 root 1.2
80 root 1.37 PORTING FROM EV 3.X to 4.X
81     EV version 4 introduces a number of incompatible changes summarised
82     here. According to the depreciation strategy used by libev, there is a
83     compatibility layer in place so programs should continue to run
84     unchanged (the XS interface lacks this layer, so programs using that one
85     need to be updated).
86    
87     This compatibility layer will be switched off in some future release.
88    
89     All changes relevant to Perl are renames of symbols, functions and
90     methods:
91    
92     EV::loop => EV::run
93     EV::LOOP_NONBLOCK => EV::RUN_NOWAIT
94     EV::LOOP_ONESHOT => EV::RUN_ONCE
95    
96     EV::unloop => EV::break
97     EV::UNLOOP_CANCEL => EV::BREAK_CANCEL
98     EV::UNLOOP_ONE => EV::BREAK_ONE
99     EV::UNLOOP_ALL => EV::BREAK_ALL
100    
101     EV::TIMEOUT => EV::TIMER
102    
103     EV::loop_count => EV::iteration
104     EV::loop_depth => EV::depth
105     EV::loop_verify => EV::verify
106    
107     The loop object methods corresponding to the functions above have been
108     similarly renamed.
109    
110 root 1.30 MODULE EXPORTS
111     This module does not export any symbols.
112    
113 root 1.20 EVENT LOOPS
114     EV supports multiple event loops: There is a single "default event loop"
115     that can handle everything including signals and child watchers, and any
116     number of "dynamic event loops" that can use different backends (with
117     various limitations), but no child and signal watchers.
118    
119     You do not have to do anything to create the default event loop: When
120     the module is loaded a suitable backend is selected on the premise of
121     selecting a working backend (which for example rules out kqueue on most
122     BSDs). Modules should, unless they have "special needs" always use the
123     default loop as this is fastest (perl-wise), best supported by other
124     modules (e.g. AnyEvent or Coro) and most portable event loop.
125    
126 root 1.21 For specific programs you can create additional event loops dynamically.
127 root 1.20
128 root 1.31 If you want to take advantage of kqueue (which often works properly for
129 root 1.28 sockets only) even though the default loop doesn't enable it, you can
130     *embed* a kqueue loop into the default loop: running the default loop
131     will then also service the kqueue loop to some extent. See the example
132     in the section about embed watchers for an example on how to achieve
133     that.
134    
135 root 1.32 $loop = new EV::Loop [$flags]
136 root 1.20 Create a new event loop as per the specified flags. Please refer to
137     the "ev_loop_new ()" function description in the libev documentation
138     (<http://pod.tst.eu/http://cvs.schmorp.de/libev/ev.pod#GLOBAL_FUNCTI
139 root 1.30 ONS>, or locally-installed as EV::libev manpage) for more info.
140 root 1.20
141     The loop will automatically be destroyed when it is no longer
142     referenced by any watcher and the loop object goes out of scope.
143    
144 root 1.30 If you are not embedding the loop, then Using "EV::FLAG_FORKCHECK"
145     is recommended, as only the default event loop is protected by this
146     module. If you *are* embedding this loop in the default loop, this
147     is not necessary, as "EV::embed" automatically does the right thing
148     on fork.
149 root 1.20
150     $loop->loop_fork
151     Must be called after a fork in the child, before entering or
152     continuing the event loop. An alternative is to use
153 root 1.27 "EV::FLAG_FORKCHECK" which calls this function automatically, at
154 root 1.20 some performance loss (refer to the libev documentation).
155    
156 root 1.27 $loop->loop_verify
157     Calls "ev_verify" to make internal consistency checks (for debugging
158 root 1.28 libev) and abort the program if any data structures were found to be
159 root 1.27 corrupted.
160    
161 root 1.21 $loop = EV::default_loop [$flags]
162 root 1.27 Return the default loop (which is a singleton object). Since this
163     module already creates the default loop with default flags,
164     specifying flags here will not have any effect unless you destroy
165 root 1.28 the default loop first, which isn't supported. So in short: don't do
166     it, and if you break it, you get to keep the pieces.
167 root 1.21
168 root 1.3 BASIC INTERFACE
169     $EV::DIED
170     Must contain a reference to a function that is called when a
171 root 1.18 callback throws an exception (with $@ containing the error). The
172 root 1.3 default prints an informative message and continues.
173    
174     If this callback throws an exception it will be silently ignored.
175    
176 root 1.21 $flags = EV::supported_backends
177     $flags = EV::recommended_backends
178     $flags = EV::embeddable_backends
179     Returns the set (see "EV::BACKEND_*" flags) of backends supported by
180     this instance of EV, the set of recommended backends (supposed to be
181     good) for this platform and the set of embeddable backends (see
182     EMBED WATCHERS).
183    
184     EV::sleep $seconds
185     Block the process for the given number of (fractional) seconds.
186    
187 root 1.6 $time = EV::time
188     Returns the current time in (fractional) seconds since the epoch.
189    
190 root 1.2 $time = EV::now
191 root 1.20 $time = $loop->now
192 root 1.6 Returns the time the last event loop iteration has been started.
193 root 1.31 This is the time that (relative) timers are based on, and referring
194 root 1.6 to it is usually faster then calling EV::time.
195    
196 root 1.32 EV::now_update
197     $loop->now_update
198     Establishes the current time by querying the kernel, updating the
199     time returned by "EV::now" in the progress. This is a costly
200     operation and is usually done automatically within "EV::loop".
201    
202     This function is rarely useful, but when some event callback runs
203     for a very long time without entering the event loop, updating
204     libev's idea of the current time is a good idea.
205    
206     EV::suspend
207     $loop->suspend
208     EV::resume
209     $loop->resume
210     These two functions suspend and resume a loop, for use when the loop
211     is not used for a while and timeouts should not be processed.
212    
213     A typical use case would be an interactive program such as a game:
214     When the user presses "^Z" to suspend the game and resumes it an
215     hour later it would be best to handle timeouts as if no time had
216     actually passed while the program was suspended. This can be
217     achieved by calling "suspend" in your "SIGTSTP" handler, sending
218     yourself a "SIGSTOP" and calling "resume" directly afterwards to
219     resume timer processing.
220    
221     Effectively, all "timer" watchers will be delayed by the time spend
222     between "suspend" and "resume", and all "periodic" watchers will be
223     rescheduled (that is, they will lose any events that would have
224     occured while suspended).
225    
226     After calling "suspend" you must not call *any* function on the
227     given loop other than "resume", and you must not call "resume"
228     without a previous call to "suspend".
229    
230     Calling "suspend"/"resume" has the side effect of updating the event
231     loop time (see "now_update").
232    
233 root 1.20 $backend = EV::backend
234     $backend = $loop->backend
235 root 1.6 Returns an integer describing the backend used by libev
236 root 1.31 (EV::BACKEND_SELECT or EV::BACKEND_EPOLL).
237 root 1.6
238     EV::loop [$flags]
239 root 1.20 $loop->loop ([$flags])
240 root 1.6 Begin checking for events and calling callbacks. It returns when a
241 root 1.10 callback calls EV::unloop.
242 root 1.6
243     The $flags argument can be one of the following:
244    
245     0 as above
246     EV::LOOP_ONESHOT block at most once (wait, but do not loop)
247     EV::LOOP_NONBLOCK do not block at all (fetch/handle events but do not wait)
248    
249 root 1.10 EV::unloop [$how]
250 root 1.20 $loop->unloop ([$how])
251 root 1.10 When called with no arguments or an argument of EV::UNLOOP_ONE,
252     makes the innermost call to EV::loop return.
253 root 1.6
254 root 1.10 When called with an argument of EV::UNLOOP_ALL, all calls to
255     EV::loop will return as fast as possible.
256 root 1.6
257 root 1.15 $count = EV::loop_count
258 root 1.20 $count = $loop->loop_count
259 root 1.15 Return the number of times the event loop has polled for new events.
260 root 1.31 Sometimes useful as a generation counter.
261 root 1.15
262 root 1.12 EV::once $fh_or_undef, $events, $timeout, $cb->($revents)
263 root 1.20 $loop->once ($fh_or_undef, $events, $timeout, $cb->($revents))
264 root 1.12 This function rolls together an I/O and a timer watcher for a single
265     one-shot event without the need for managing a watcher object.
266    
267     If $fh_or_undef is a filehandle or file descriptor, then $events
268     must be a bitset containing either "EV::READ", "EV::WRITE" or
269     "EV::READ | EV::WRITE", indicating the type of I/O event you want to
270     wait for. If you do not want to wait for some I/O event, specify
271     "undef" for $fh_or_undef and 0 for $events).
272    
273     If timeout is "undef" or negative, then there will be no timeout.
274     Otherwise a EV::timer with this value will be started.
275    
276     When an error occurs or either the timeout or I/O watcher triggers,
277     then the callback will be called with the received event set (in
278 root 1.20 general you can expect it to be a combination of "EV::ERROR",
279 root 1.36 "EV::READ", "EV::WRITE" and "EV::TIMER").
280 root 1.12
281     EV::once doesn't return anything: the watchers stay active till
282     either of them triggers, then they will be stopped and freed, and
283     the callback invoked.
284    
285 root 1.17 EV::feed_fd_event ($fd, $revents)
286 root 1.20 $loop->feed_fd_event ($fd, $revents)
287 root 1.17 Feed an event on a file descriptor into EV. EV will react to this
288     call as if the readyness notifications specified by $revents (a
289     combination of "EV::READ" and "EV::WRITE") happened on the file
290     descriptor $fd.
291    
292     EV::feed_signal_event ($signal)
293     Feed a signal event into EV. EV will react to this call as if the
294     signal specified by $signal had occured.
295    
296 root 1.21 EV::set_io_collect_interval $time
297     $loop->set_io_collect_interval ($time)
298     EV::set_timeout_collect_interval $time
299     $loop->set_timeout_collect_interval ($time)
300     These advanced functions set the minimum block interval when polling
301     for I/O events and the minimum wait interval for timer events. See
302     the libev documentation at
303     <http://pod.tst.eu/http://cvs.schmorp.de/libev/ev.pod#FUNCTIONS_CONT
304 root 1.30 ROLLING_THE_EVENT_LOOP> (locally installed as EV::libev) for a more
305     detailed discussion.
306 root 1.21
307 root 1.33 $count = EV::pending_count
308     $count = $loop->pending_count
309     Returns the number of currently pending watchers.
310    
311     EV::invoke_pending
312     $loop->invoke_pending
313     Invoke all currently pending watchers.
314    
315 root 1.20 WATCHER OBJECTS
316 root 1.6 A watcher is an object that gets created to record your interest in some
317     event. For instance, if you want to wait for STDIN to become readable,
318     you would create an EV::io watcher for that:
319    
320 root 1.28 my $watcher = EV::io *STDIN, EV::READ, sub {
321     my ($watcher, $revents) = @_;
322     warn "yeah, STDIN should now be readable without blocking!\n"
323     };
324 root 1.2
325 root 1.6 All watchers can be active (waiting for events) or inactive (paused).
326     Only active watchers will have their callbacks invoked. All callbacks
327     will be called with at least two arguments: the watcher and a bitmask of
328     received events.
329    
330     Each watcher type has its associated bit in revents, so you can use the
331     same callback for multiple watchers. The event mask is named after the
332 root 1.31 type, i.e. EV::child sets EV::CHILD, EV::prepare sets EV::PREPARE,
333 root 1.16 EV::periodic sets EV::PERIODIC and so on, with the exception of I/O
334 root 1.36 events (which can set both EV::READ and EV::WRITE bits).
335 root 1.6
336     In the rare case where one wants to create a watcher but not start it at
337     the same time, each constructor has a variant with a trailing "_ns" in
338     its name, e.g. EV::io has a non-starting variant EV::io_ns and so on.
339    
340     Please note that a watcher will automatically be stopped when the
341 root 1.7 watcher object is destroyed, so you *need* to keep the watcher objects
342 root 1.6 returned by the constructors.
343    
344 root 1.7 Also, all methods changing some aspect of a watcher (->set, ->priority,
345     ->fh and so on) automatically stop and start it again if it is active,
346     which means pending events get lost.
347    
348 root 1.13 COMMON WATCHER METHODS
349     This section lists methods common to all watchers.
350 root 1.2
351 root 1.6 $w->start
352     Starts a watcher if it isn't active already. Does nothing to an
353     already active watcher. By default, all watchers start out in the
354     active state (see the description of the "_ns" variants if you need
355     stopped watchers).
356    
357     $w->stop
358     Stop a watcher if it is active. Also clear any pending events
359     (events that have been received but that didn't yet result in a
360 root 1.16 callback invocation), regardless of whether the watcher was active
361     or not.
362 root 1.6
363     $bool = $w->is_active
364     Returns true if the watcher is active, false otherwise.
365    
366 root 1.8 $current_data = $w->data
367     $old_data = $w->data ($new_data)
368     Queries a freely usable data scalar on the watcher and optionally
369     changes it. This is a way to associate custom data with a watcher:
370    
371     my $w = EV::timer 60, 0, sub {
372     warn $_[0]->data;
373     };
374     $w->data ("print me!");
375    
376 root 1.6 $current_cb = $w->cb
377     $old_cb = $w->cb ($new_cb)
378     Queries the callback on the watcher and optionally changes it. You
379 root 1.7 can do this at any time without the watcher restarting.
380    
381     $current_priority = $w->priority
382     $old_priority = $w->priority ($new_priority)
383     Queries the priority on the watcher and optionally changes it.
384     Pending watchers with higher priority will be invoked first. The
385     valid range of priorities lies between EV::MAXPRI (default 2) and
386     EV::MINPRI (default -2). If the priority is outside this range it
387     will automatically be normalised to the nearest valid priority.
388    
389 root 1.12 The default priority of any newly-created watcher is 0.
390    
391     Note that the priority semantics have not yet been fleshed out and
392     are subject to almost certain change.
393 root 1.2
394 root 1.17 $w->invoke ($revents)
395 root 1.6 Call the callback *now* with the given event mask.
396 root 1.2
397 root 1.17 $w->feed_event ($revents)
398     Feed some events on this watcher into EV. EV will react to this call
399     as if the watcher had received the given $revents mask.
400    
401     $revents = $w->clear_pending
402 root 1.20 If the watcher is pending, this function clears its pending status
403     and returns its $revents bitset (as if its callback was invoked). If
404     the watcher isn't pending it does nothing and returns 0.
405 root 1.17
406 root 1.12 $previous_state = $w->keepalive ($bool)
407     Normally, "EV::loop" will return when there are no active watchers
408     (which is a "deadlock" because no progress can be made anymore).
409 root 1.35 This is convenient because it allows you to start your watchers (and
410 root 1.12 your jobs), call "EV::loop" once and when it returns you know that
411     all your jobs are finished (or they forgot to register some watchers
412     for their task :).
413    
414 root 1.20 Sometimes, however, this gets in your way, for example when the
415 root 1.12 module that calls "EV::loop" (usually the main program) is not the
416     same module as a long-living watcher (for example a DNS client
417     module written by somebody else even). Then you might want any
418     outstanding requests to be handled, but you would not want to keep
419     "EV::loop" from returning just because you happen to have this
420     long-running UDP port watcher.
421    
422     In this case you can clear the keepalive status, which means that
423     even though your watcher is active, it won't keep "EV::loop" from
424     returning.
425    
426 root 1.31 The initial value for keepalive is true (enabled), and you can
427 root 1.12 change it any time.
428    
429 root 1.16 Example: Register an I/O watcher for some UDP socket but do not keep
430 root 1.12 the event loop from running just because of that watcher.
431    
432     my $udp_socket = ...
433     my $udp_watcher = EV::io $udp_socket, EV::READ, sub { ... };
434 root 1.28 $udp_watcher->keepalive (0);
435 root 1.20
436     $loop = $w->loop
437     Return the loop that this watcher is attached to.
438 root 1.12
439 root 1.20 WATCHER TYPES
440 root 1.13 Each of the following subsections describes a single watcher type.
441    
442 root 1.16 I/O WATCHERS - is this file descriptor readable or writable?
443 root 1.6 $w = EV::io $fileno_or_fh, $eventmask, $callback
444     $w = EV::io_ns $fileno_or_fh, $eventmask, $callback
445 root 1.20 $w = $loop->io ($fileno_or_fh, $eventmask, $callback)
446     $w = $loop->io_ns ($fileno_or_fh, $eventmask, $callback)
447 root 1.6 As long as the returned watcher object is alive, call the $callback
448 root 1.13 when at least one of events specified in $eventmask occurs.
449 root 1.2
450 root 1.6 The $eventmask can be one or more of these constants ORed together:
451 root 1.1
452 root 1.2 EV::READ wait until read() wouldn't block anymore
453     EV::WRITE wait until write() wouldn't block anymore
454    
455 root 1.6 The "io_ns" variant doesn't start (activate) the newly created
456     watcher.
457    
458     $w->set ($fileno_or_fh, $eventmask)
459     Reconfigures the watcher, see the constructor above for details. Can
460     be called at any time.
461    
462     $current_fh = $w->fh
463     $old_fh = $w->fh ($new_fh)
464     Returns the previously set filehandle and optionally set a new one.
465    
466     $current_eventmask = $w->events
467     $old_eventmask = $w->events ($new_eventmask)
468     Returns the previously set event mask and optionally set a new one.
469    
470 root 1.13 TIMER WATCHERS - relative and optionally repeating timeouts
471 root 1.6 $w = EV::timer $after, $repeat, $callback
472     $w = EV::timer_ns $after, $repeat, $callback
473 root 1.20 $w = $loop->timer ($after, $repeat, $callback)
474     $w = $loop->timer_ns ($after, $repeat, $callback)
475 root 1.12 Calls the callback after $after seconds (which may be fractional).
476     If $repeat is non-zero, the timer will be restarted (with the
477     $repeat value as $after) after the callback returns.
478 root 1.6
479     This means that the callback would be called roughly after $after
480 root 1.10 seconds, and then every $repeat seconds. The timer does his best not
481     to drift, but it will not invoke the timer more often then once per
482     event loop iteration, and might drift in other cases. If that isn't
483     acceptable, look at EV::periodic, which can provide long-term stable
484     timers.
485 root 1.6
486 root 1.10 The timer is based on a monotonic clock, that is, if somebody is
487 root 1.6 sitting in front of the machine while the timer is running and
488     changes the system clock, the timer will nevertheless run (roughly)
489     the same time.
490    
491     The "timer_ns" variant doesn't start (activate) the newly created
492     watcher.
493    
494     $w->set ($after, $repeat)
495     Reconfigures the watcher, see the constructor above for details. Can
496 root 1.13 be called at any time.
497 root 1.6
498     $w->again
499     Similar to the "start" method, but has special semantics for
500     repeating timers:
501 root 1.2
502 root 1.10 If the timer is active and non-repeating, it will be stopped.
503    
504 root 1.6 If the timer is active and repeating, reset the timeout to occur
505     $repeat seconds after now.
506 root 1.2
507 root 1.10 If the timer is inactive and repeating, start it using the repeat
508     value.
509 root 1.6
510     Otherwise do nothing.
511    
512     This behaviour is useful when you have a timeout for some IO
513     operation. You create a timer object with the same value for $after
514     and $repeat, and then, in the read/write watcher, run the "again"
515     method on the timeout.
516    
517 root 1.13 PERIODIC WATCHERS - to cron or not to cron?
518 root 1.8 $w = EV::periodic $at, $interval, $reschedule_cb, $callback
519     $w = EV::periodic_ns $at, $interval, $reschedule_cb, $callback
520 root 1.20 $w = $loop->periodic ($at, $interval, $reschedule_cb, $callback)
521     $w = $loop->periodic_ns ($at, $interval, $reschedule_cb, $callback)
522 root 1.8 Similar to EV::timer, but is not based on relative timeouts but on
523     absolute times. Apart from creating "simple" timers that trigger
524     "at" the specified time, it can also be used for non-drifting
525     absolute timers and more complex, cron-like, setups that are not
526     adversely affected by time jumps (i.e. when the system clock is
527     changed by explicit date -s or other means such as ntpd). It is also
528     the most complex watcher type in EV.
529    
530     It has three distinct "modes":
531    
532 root 1.22 * absolute timer ($interval = $reschedule_cb = 0)
533    
534 root 1.8 This time simply fires at the wallclock time $at and doesn't
535     repeat. It will not adjust when a time jump occurs, that is, if
536     it is to be run at January 1st 2011 then it will run when the
537     system time reaches or surpasses this time.
538    
539 root 1.23 * repeating interval timer ($interval > 0, $reschedule_cb = 0)
540 root 1.22
541 root 1.8 In this mode the watcher will always be scheduled to time out at
542     the next "$at + N * $interval" time (for some integer N) and
543     then repeat, regardless of any time jumps.
544    
545     This can be used to create timers that do not drift with respect
546     to system time:
547    
548     my $hourly = EV::periodic 0, 3600, 0, sub { print "once/hour\n" };
549    
550     That doesn't mean there will always be 3600 seconds in between
551     triggers, but only that the the clalback will be called when the
552     system time shows a full hour (UTC).
553    
554     Another way to think about it (for the mathematically inclined)
555     is that EV::periodic will try to run the callback in this mode
556     at the next possible time where "$time = $at (mod $interval)",
557     regardless of any time jumps.
558    
559 root 1.22 * manual reschedule mode ($reschedule_cb = coderef)
560    
561 root 1.8 In this mode $interval and $at are both being ignored. Instead,
562 root 1.10 each time the periodic watcher gets scheduled, the reschedule
563 root 1.8 callback ($reschedule_cb) will be called with the watcher as
564     first, and the current time as second argument.
565    
566     *This callback MUST NOT stop or destroy this or any other
567 root 1.26 periodic watcher, ever, and MUST NOT call any event loop
568     functions or methods*. If you need to stop it, return 1e30 and
569     stop it afterwards. You may create and start a "EV::prepare"
570     watcher for this task.
571 root 1.8
572     It must return the next time to trigger, based on the passed
573 root 1.26 time value (that is, the lowest time value larger than or equal
574     to to the second argument). It will usually be called just
575     before the callback will be triggered, but might be called at
576     other times, too.
577 root 1.8
578     This can be used to create very complex timers, such as a timer
579     that triggers on each midnight, local time (actually 24 hours
580     after the last midnight, to keep the example simple. If you know
581     a way to do it correctly in about the same space (without
582     requiring elaborate modules), drop me a note :):
583    
584     my $daily = EV::periodic 0, 0, sub {
585     my ($w, $now) = @_;
586    
587     use Time::Local ();
588     my (undef, undef, undef, $d, $m, $y) = localtime $now;
589     86400 + Time::Local::timelocal 0, 0, 0, $d, $m, $y
590     }, sub {
591     print "it's midnight or likely shortly after, now\n";
592     };
593 root 1.6
594     The "periodic_ns" variant doesn't start (activate) the newly created
595 root 1.2 watcher.
596    
597 root 1.8 $w->set ($at, $interval, $reschedule_cb)
598 root 1.6 Reconfigures the watcher, see the constructor above for details. Can
599 root 1.13 be called at any time.
600 root 1.6
601 root 1.8 $w->again
602     Simply stops and starts the watcher again.
603    
604 root 1.19 $time = $w->at
605     Return the time that the watcher is expected to trigger next.
606    
607 root 1.13 SIGNAL WATCHERS - signal me when a signal gets signalled!
608 root 1.6 $w = EV::signal $signal, $callback
609     $w = EV::signal_ns $signal, $callback
610 root 1.34 $w = $loop->signal ($signal, $callback)
611     $w = $loop->signal_ns ($signal, $callback)
612 root 1.4 Call the callback when $signal is received (the signal can be
613 root 1.13 specified by number or by name, just as with "kill" or %SIG).
614 root 1.4
615 root 1.34 Only one event loop can grab a given signal - attempting to grab the
616     same signal from two EV loops will crash the program immediately or
617     cause data corruption.
618    
619 root 1.4 EV will grab the signal for the process (the kernel only allows one
620 root 1.6 component to receive a signal at a time) when you start a signal
621     watcher, and removes it again when you stop it. Perl does the same
622     when you add/remove callbacks to %SIG, so watch out.
623    
624     You can have as many signal watchers per signal as you want.
625 root 1.1
626 root 1.6 The "signal_ns" variant doesn't start (activate) the newly created
627     watcher.
628    
629     $w->set ($signal)
630     Reconfigures the watcher, see the constructor above for details. Can
631 root 1.13 be called at any time.
632 root 1.6
633 root 1.7 $current_signum = $w->signal
634     $old_signum = $w->signal ($new_signal)
635     Returns the previously set signal (always as a number not name) and
636     optionally set a new one.
637    
638 root 1.13 CHILD WATCHERS - watch out for process status changes
639 root 1.22 $w = EV::child $pid, $trace, $callback
640     $w = EV::child_ns $pid, $trace, $callback
641     $w = $loop->child ($pid, $trace, $callback)
642     $w = $loop->child_ns ($pid, $trace, $callback)
643 root 1.6 Call the callback when a status change for pid $pid (or any pid if
644 root 1.22 $pid is 0) has been received (a status change happens when the
645     process terminates or is killed, or, when trace is true,
646     additionally when it is stopped or continued). More precisely: when
647     the process receives a "SIGCHLD", EV will fetch the outstanding
648     exit/wait status for all changed/zombie children and call the
649     callback.
650 root 1.6
651 root 1.13 It is valid (and fully supported) to install a child watcher after a
652     child has exited but before the event loop has started its next
653     iteration (for example, first you "fork", then the new child process
654     might exit, and only then do you install a child watcher in the
655     parent for the new pid).
656 root 1.6
657 root 1.13 You can access both exit (or tracing) status and pid by using the
658     "rstatus" and "rpid" methods on the watcher object.
659    
660     You can have as many pid watchers per pid as you want, they will all
661     be called.
662 root 1.6
663     The "child_ns" variant doesn't start (activate) the newly created
664     watcher.
665 root 1.1
666 root 1.22 $w->set ($pid, $trace)
667 root 1.6 Reconfigures the watcher, see the constructor above for details. Can
668 root 1.13 be called at any time.
669 root 1.6
670 root 1.7 $current_pid = $w->pid
671     Returns the previously set process id and optionally set a new one.
672    
673     $exit_status = $w->rstatus
674     Return the exit/wait status (as returned by waitpid, see the waitpid
675     entry in perlfunc).
676    
677     $pid = $w->rpid
678     Return the pid of the awaited child (useful when you have installed
679     a watcher for all pids).
680    
681 root 1.13 STAT WATCHERS - did the file attributes just change?
682     $w = EV::stat $path, $interval, $callback
683     $w = EV::stat_ns $path, $interval, $callback
684 root 1.20 $w = $loop->stat ($path, $interval, $callback)
685     $w = $loop->stat_ns ($path, $interval, $callback)
686 root 1.13 Call the callback when a file status change has been detected on
687     $path. The $path does not need to exist, changing from "path exists"
688     to "path does not exist" is a status change like any other.
689    
690     The $interval is a recommended polling interval for systems where
691     OS-supported change notifications don't exist or are not supported.
692     If you use 0 then an unspecified default is used (which is highly
693     recommended!), which is to be expected to be around five seconds
694     usually.
695    
696     This watcher type is not meant for massive numbers of stat watchers,
697     as even with OS-supported change notifications, this can be
698     resource-intensive.
699    
700     The "stat_ns" variant doesn't start (activate) the newly created
701     watcher.
702    
703 root 1.14 ... = $w->stat
704     This call is very similar to the perl "stat" built-in: It stats
705     (using "lstat") the path specified in the watcher and sets perls
706     stat cache (as well as EV's idea of the current stat values) to the
707     values found.
708    
709     In scalar context, a boolean is return indicating success or failure
710     of the stat. In list context, the same 13-value list as with stat is
711     returned (except that the blksize and blocks fields are not
712     reliable).
713    
714     In the case of an error, errno is set to "ENOENT" (regardless of the
715     actual error value) and the "nlink" value is forced to zero (if the
716     stat was successful then nlink is guaranteed to be non-zero).
717    
718     See also the next two entries for more info.
719    
720     ... = $w->attr
721     Just like "$w->stat", but without the initial stat'ing: this returns
722     the values most recently detected by EV. See the next entry for more
723     info.
724    
725     ... = $w->prev
726     Just like "$w->stat", but without the initial stat'ing: this returns
727     the previous set of values, before the change.
728    
729     That is, when the watcher callback is invoked, "$w->prev" will be
730     set to the values found *before* a change was detected, while
731     "$w->attr" returns the values found leading to the change detection.
732     The difference (if any) between "prev" and "attr" is what triggered
733     the callback.
734    
735     If you did something to the filesystem object and do not want to
736     trigger yet another change, you can call "stat" to update EV's idea
737     of what the current attributes are.
738    
739 root 1.13 $w->set ($path, $interval)
740     Reconfigures the watcher, see the constructor above for details. Can
741     be called at any time.
742    
743     $current_path = $w->path
744     $old_path = $w->path ($new_path)
745     Returns the previously set path and optionally set a new one.
746    
747     $current_interval = $w->interval
748     $old_interval = $w->interval ($new_interval)
749     Returns the previously set interval and optionally set a new one.
750     Can be used to query the actual interval used.
751    
752     IDLE WATCHERS - when you've got nothing better to do...
753 root 1.6 $w = EV::idle $callback
754     $w = EV::idle_ns $callback
755 root 1.20 $w = $loop->idle ($callback)
756     $w = $loop->idle_ns ($callback)
757 root 1.16 Call the callback when there are no other pending watchers of the
758     same or higher priority (excluding check, prepare and other idle
759     watchers of the same or lower priority, of course). They are called
760     idle watchers because when the watcher is the highest priority
761     pending event in the process, the process is considered to be idle
762     at that priority.
763    
764     If you want a watcher that is only ever called when *no* other
765     events are outstanding you have to set the priority to "EV::MINPRI".
766 root 1.1
767 root 1.6 The process will not block as long as any idle watchers are active,
768     and they will be called repeatedly until stopped.
769 root 1.1
770 root 1.16 For example, if you have idle watchers at priority 0 and 1, and an
771     I/O watcher at priority 0, then the idle watcher at priority 1 and
772     the I/O watcher will always run when ready. Only when the idle
773     watcher at priority 1 is stopped and the I/O watcher at priority 0
774     is not pending with the 0-priority idle watcher be invoked.
775    
776 root 1.6 The "idle_ns" variant doesn't start (activate) the newly created
777     watcher.
778 root 1.4
779 root 1.13 PREPARE WATCHERS - customise your event loop!
780 root 1.6 $w = EV::prepare $callback
781     $w = EV::prepare_ns $callback
782 root 1.20 $w = $loop->prepare ($callback)
783     $w = $loop->prepare_ns ($callback)
784 root 1.6 Call the callback just before the process would block. You can still
785     create/modify any watchers at this point.
786 root 1.1
787 root 1.6 See the EV::check watcher, below, for explanations and an example.
788 root 1.1
789 root 1.6 The "prepare_ns" variant doesn't start (activate) the newly created
790     watcher.
791 root 1.1
792 root 1.13 CHECK WATCHERS - customise your event loop even more!
793 root 1.6 $w = EV::check $callback
794     $w = EV::check_ns $callback
795 root 1.20 $w = $loop->check ($callback)
796     $w = $loop->check_ns ($callback)
797 root 1.6 Call the callback just after the process wakes up again (after it
798     has gathered events), but before any other callbacks have been
799     invoked.
800    
801 root 1.37 This can be used to integrate other event-based software into the EV
802 root 1.6 mainloop: You register a prepare callback and in there, you create
803     io and timer watchers as required by the other software. Here is a
804     real-world example of integrating Net::SNMP (with some details left
805     out):
806    
807     our @snmp_watcher;
808    
809     our $snmp_prepare = EV::prepare sub {
810     # do nothing unless active
811     $dispatcher->{_event_queue_h}
812     or return;
813    
814     # make the dispatcher handle any outstanding stuff
815 root 1.12 ... not shown
816 root 1.6
817 root 1.16 # create an I/O watcher for each and every socket
818 root 1.6 @snmp_watcher = (
819     (map { EV::io $_, EV::READ, sub { } }
820     keys %{ $dispatcher->{_descriptors} }),
821 root 1.12
822     EV::timer +($event->[Net::SNMP::Dispatcher::_ACTIVE]
823     ? $event->[Net::SNMP::Dispatcher::_TIME] - EV::now : 0),
824     0, sub { },
825 root 1.6 );
826     };
827    
828 root 1.12 The callbacks are irrelevant (and are not even being called), the
829     only purpose of those watchers is to wake up the process as soon as
830     one of those events occurs (socket readable, or timer timed out).
831     The corresponding EV::check watcher will then clean up:
832 root 1.6
833     our $snmp_check = EV::check sub {
834     # destroy all watchers
835     @snmp_watcher = ();
836    
837     # make the dispatcher handle any new stuff
838 root 1.12 ... not shown
839 root 1.6 };
840    
841     The callbacks of the created watchers will not be called as the
842 root 1.31 watchers are destroyed before this can happen (remember EV::check
843 root 1.6 gets called first).
844 root 1.1
845 root 1.6 The "check_ns" variant doesn't start (activate) the newly created
846     watcher.
847 root 1.1
848 root 1.37 EV::CHECK constant issues
849     Like all other watcher types, there is a bitmask constant for use in
850     $revents and other places. The "EV::CHECK" is special as it has the
851     same name as the "CHECK" sub called by Perl. This doesn't cause big
852     issues on newer perls (beginning with 5.8.9), but it means thatthe
853     constant must be *inlined*, i.e. runtime calls will not work. That
854     means that as long as you always "use EV" and then "EV::CHECK" you
855     are on the safe side.
856    
857 root 1.13 FORK WATCHERS - the audacity to resume the event loop after a fork
858     Fork watchers are called when a "fork ()" was detected. The invocation
859     is done before the event loop blocks next and before "check" watchers
860     are being called, and only in the child after the fork.
861    
862     $w = EV::fork $callback
863     $w = EV::fork_ns $callback
864 root 1.20 $w = $loop->fork ($callback)
865     $w = $loop->fork_ns ($callback)
866 root 1.13 Call the callback before the event loop is resumed in the child
867     process after a fork.
868    
869     The "fork_ns" variant doesn't start (activate) the newly created
870     watcher.
871    
872 root 1.21 EMBED WATCHERS - when one backend isn't enough...
873     This is a rather advanced watcher type that lets you embed one event
874     loop into another (currently only IO events are supported in the
875     embedded loop, other types of watchers might be handled in a delayed or
876     incorrect fashion and must not be used).
877    
878     See the libev documentation at
879     <http://pod.tst.eu/http://cvs.schmorp.de/libev/ev.pod#code_ev_embed_code
880 root 1.30 _when_one_backend_> (locally installed as EV::libev) for more details.
881 root 1.21
882     In short, this watcher is most useful on BSD systems without working
883     kqueue to still be able to handle a large number of sockets:
884    
885 root 1.28 my $socket_loop;
886 root 1.33
887     # check wether we use SELECT or POLL _and_ KQUEUE is supported
888 root 1.28 if (
889     (EV::backend & (EV::BACKEND_POLL | EV::BACKEND_SELECT))
890     && (EV::supported_backends & EV::embeddable_backends & EV::BACKEND_KQUEUE)
891     ) {
892     # use kqueue for sockets
893     $socket_loop = new EV::Loop EV::BACKEND_KQUEUE | EV::FLAG_NOENV;
894     }
895 root 1.33
896     # use the default loop otherwise
897 root 1.28 $socket_loop ||= EV::default_loop;
898 root 1.21
899 root 1.29 $w = EV::embed $otherloop[, $callback]
900     $w = EV::embed_ns $otherloop[, $callback]
901     $w = $loop->embed ($otherloop[, $callback])
902     $w = $loop->embed_ns ($otherloop[, $callback])
903 root 1.21 Call the callback when the embedded event loop ($otherloop) has any
904 root 1.29 I/O activity. The $callback is optional: if it is missing, then the
905     embedded event loop will be managed automatically (which is
906     recommended), otherwise you have to invoke "sweep" yourself.
907 root 1.21
908     The "embed_ns" variant doesn't start (activate) the newly created
909     watcher.
910    
911 root 1.23 ASYNC WATCHERS - how to wake up another event loop
912     Async watchers are provided by EV, but have little use in perl directly,
913 root 1.33 as perl neither supports threads running in parallel nor direct access
914     to signal handlers or other contexts where they could be of value.
915 root 1.23
916     It is, however, possible to use them from the XS level.
917    
918     Please see the libev documentation for further details.
919    
920 root 1.24 $w = EV::async $callback
921     $w = EV::async_ns $callback
922     $w->send
923     $bool = $w->async_pending
924    
925 root 1.16 PERL SIGNALS
926     While Perl signal handling (%SIG) is not affected by EV, the behaviour
927     with EV is as the same as any other C library: Perl-signals will only be
928     handled when Perl runs, which means your signal handler might be invoked
929     only the next time an event callback is invoked.
930    
931     The solution is to use EV signal watchers (see "EV::signal"), which will
932     ensure proper operations with regards to other event watchers.
933    
934     If you cannot do this for whatever reason, you can also force a watcher
935     to be called on every event loop iteration by installing a "EV::check"
936     watcher:
937    
938     my $async_check = EV::check sub { };
939    
940 root 1.20 This ensures that perl gets into control for a short time to handle any
941     pending signals, and also ensures (slightly) slower overall operation.
942 root 1.16
943 root 1.33 ITHREADS
944     Ithreads are not supported by this module in any way. Perl
945     pseudo-threads is evil stuff and must die. Real threads as provided by
946     Coro are fully supported (and enhanced support is available via
947     Coro::EV).
948 root 1.12
949     FORK
950     Most of the "improved" event delivering mechanisms of modern operating
951     systems have quite a few problems with fork(2) (to put it bluntly: it is
952     not supported and usually destructive). Libev makes it possible to work
953     around this by having a function that recreates the kernel state after
954     fork in the child.
955    
956     On non-win32 platforms, this module requires the pthread_atfork
957     functionality to do this automatically for you. This function is quite
958     buggy on most BSDs, though, so YMMV. The overhead for this is quite
959     negligible, because everything the function currently does is set a flag
960     that is checked only when the event loop gets used the next time, so
961     when you do fork but not use EV, the overhead is minimal.
962    
963     On win32, there is no notion of fork so all this doesn't apply, of
964     course.
965 root 1.2
966     SEE ALSO
967 root 1.38 EV::MakeMaker - MakeMaker interface to XS API, EV::ADNS (asynchronous
968     DNS), Glib::EV (makes Glib/Gtk2 use EV as event loop), EV::Glib (embed
969     Glib into EV), Coro::EV (efficient thread integration), Net::SNMP::EV
970     (asynchronous SNMP), AnyEvent for event-loop agnostic and portable event
971     driven programming.
972 root 1.1
973     AUTHOR
974 root 1.28 Marc Lehmann <schmorp@schmorp.de>
975     http://home.schmorp.de/
976 root 1.1