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