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