ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/EV/EV.pm
Revision: 1.114
Committed: Wed Apr 15 19:35:53 2009 UTC (15 years, 1 month ago) by root
Branch: MAIN
Changes since 1.113: +42 -0 lines
Log Message:
resume/suspend

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