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