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