ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/EV/EV.pm
Revision: 1.73
Committed: Fri Dec 21 05:10:01 2007 UTC (16 years, 4 months ago) by root
Branch: MAIN
Changes since 1.72: +97 -5 lines
Log Message:
*** empty log message ***

File Contents

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