ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/EV/EV.pm
Revision: 1.57
Committed: Wed Nov 28 17:32:24 2007 UTC (16 years, 5 months ago) by root
Branch: MAIN
Changes since 1.56: +35 -0 lines
Log Message:
fucking windows hates iso c, stupid microsoft lock-in strategy

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