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