ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/EV/EV.pm
Revision: 1.115
Committed: Tue Apr 28 00:50:56 2009 UTC (15 years ago) by root
Branch: MAIN
CVS Tags: rel-3_6
Changes since 1.114: +1 -1 lines
Log Message:
3.6

File Contents

# Content
1 =head1 NAME
2
3 EV - perl interface to libev, a high performance full-featured event loop
4
5 =head1 SYNOPSIS
6
7 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
40 my $w = EV::child 666, 0, sub {
41 my ($w, $revents) = @_;
42 my $status = $w->rstatus;
43 };
44
45 # STAT CHANGES
46 my $w = EV::stat "/etc/passwd", 10, sub {
47 my ($w, $revents) = @_;
48 warn $w->path, " has changed somehow.\n";
49 };
50
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
56 =head1 DESCRIPTION
57
58 This module provides an interface to libev
59 (L<http://software.schmorp.de/pkg/libev.html>). While the documentation
60 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 F<perldoc EV::libev>) for more subtle details on watcher semantics or some
63 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
67 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 =head2 MODULE EXPORTS
74
75 This module does not export any symbols.
76
77 =cut
78
79 package EV;
80
81 no warnings;
82 use strict;
83
84 BEGIN {
85 our $VERSION = '3.6';
86 use XSLoader;
87 XSLoader::load "EV", $VERSION;
88 }
89
90 @EV::IO::ISA =
91 @EV::Timer::ISA =
92 @EV::Periodic::ISA =
93 @EV::Signal::ISA =
94 @EV::Child::ISA =
95 @EV::Stat::ISA =
96 @EV::Idle::ISA =
97 @EV::Prepare::ISA =
98 @EV::Check::ISA =
99 @EV::Embed::ISA =
100 @EV::Fork::ISA =
101 @EV::Async::ISA =
102 "EV::Watcher";
103
104 @EV::Loop::Default::ISA = "EV::Loop";
105
106 =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 For specific programs you can create additional event loops dynamically.
121
122 If you want to take advantage of kqueue (which often works properly for
123 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 =over 4
129
130 =item $loop = new EV::Loop [$flags]
131
132 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 or locally-installed as F<EV::libev> manpage) for more info.
136
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 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
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 this function automatically, at some performance loss (refer to the libev
150 documentation).
151
152 =item $loop->loop_verify
153
154 Calls C<ev_verify> to make internal consistency checks (for debugging
155 libev) and abort the program if any data structures were found to be
156 corrupted.
157
158 =item $loop = EV::default_loop [$flags]
159
160 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 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
166 =back
167
168
169 =head1 BASIC INTERFACE
170
171 =over 4
172
173 =item $EV::DIED
174
175 Must contain a reference to a function that is called when a callback
176 throws an exception (with $@ containing the error). The default prints an
177 informative message and continues.
178
179 If this callback throws an exception it will be silently ignored.
180
181 =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 =item EV::sleep $seconds
192
193 Block the process for the given number of (fractional) seconds.
194
195 =item $time = EV::time
196
197 Returns the current time in (fractional) seconds since the epoch.
198
199 =item $time = EV::now
200
201 =item $time = $loop->now
202
203 Returns the time the last event loop iteration has been started. This
204 is the time that (relative) timers are based on, and referring to it is
205 usually faster then calling EV::time.
206
207 =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 =item $backend = EV::backend
250
251 =item $backend = $loop->backend
252
253 Returns an integer describing the backend used by libev (EV::BACKEND_SELECT
254 or EV::BACKEND_EPOLL).
255
256 =item EV::loop [$flags]
257
258 =item $loop->loop ([$flags])
259
260 Begin checking for events and calling callbacks. It returns when a
261 callback calls EV::unloop.
262
263 The $flags argument can be one of the following:
264
265 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
269 =item EV::unloop [$how]
270
271 =item $loop->unloop ([$how])
272
273 When called with no arguments or an argument of EV::UNLOOP_ONE, makes the
274 innermost call to EV::loop return.
275
276 When called with an argument of EV::UNLOOP_ALL, all calls to EV::loop will return as
277 fast as possible.
278
279 =item $count = EV::loop_count
280
281 =item $count = $loop->loop_count
282
283 Return the number of times the event loop has polled for new
284 events. Sometimes useful as a generation counter.
285
286 =item EV::once $fh_or_undef, $events, $timeout, $cb->($revents)
287
288 =item $loop->once ($fh_or_undef, $events, $timeout, $cb->($revents))
289
290 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 you can expect it to be a combination of C<EV::ERROR>, C<EV::READ>,
305 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 =item EV::feed_fd_event ($fd, $revents)
312
313 =item $loop->feed_fd_event ($fd, $revents)
314
315 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 =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 L<http://pod.tst.eu/http://cvs.schmorp.de/libev/ev.pod#FUNCTIONS_CONTROLLING_THE_EVENT_LOOP>
335 (locally installed as F<EV::libev>) for a more detailed discussion.
336
337 =back
338
339
340 =head1 WATCHER OBJECTS
341
342 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 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
351 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 type, i.e. EV::child sets EV::CHILD, EV::prepare sets EV::PREPARE,
359 EV::periodic sets EV::PERIODIC and so on, with the exception of I/O events
360 (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 object is destroyed, so you I<need> to keep the watcher objects returned by
369 the constructors.
370
371 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 =head2 COMMON WATCHER METHODS
376
377 This section lists methods common to all watchers.
378
379 =over 4
380
381 =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
389 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 regardless of whether the watcher was active or not.
392
393 =item $bool = $w->is_active
394
395 Returns true if the watcher is active, false otherwise.
396
397 =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 =item $current_cb = $w->cb
410
411 =item $old_cb = $w->cb ($new_cb)
412
413 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 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 normalised to the nearest valid priority.
425
426 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
431 =item $w->invoke ($revents)
432
433 Call the callback *now* with the given event mask.
434
435 =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 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 watcher isn't pending it does nothing and returns C<0>.
445
446 =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 Sometimes, however, this gets in your way, for example when the module
455 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 The initial value for keepalive is true (enabled), and you can change it
465 any time.
466
467 Example: Register an I/O watcher for some UDP socket but do not keep the
468 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 $udp_watcher->keepalive (0);
473
474 =item $loop = $w->loop
475
476 Return the loop that this watcher is attached to.
477
478 =back
479
480
481 =head1 WATCHER TYPES
482
483 Each of the following subsections describes a single watcher type.
484
485 =head3 I/O WATCHERS - is this file descriptor readable or writable?
486
487 =over 4
488
489 =item $w = EV::io $fileno_or_fh, $eventmask, $callback
490
491 =item $w = EV::io_ns $fileno_or_fh, $eventmask, $callback
492
493 =item $w = $loop->io ($fileno_or_fh, $eventmask, $callback)
494
495 =item $w = $loop->io_ns ($fileno_or_fh, $eventmask, $callback)
496
497 As long as the returned watcher object is alive, call the C<$callback>
498 when at least one of events specified in C<$eventmask> occurs.
499
500 The $eventmask can be one or more of these constants ORed together:
501
502 EV::READ wait until read() wouldn't block anymore
503 EV::WRITE wait until write() wouldn't block anymore
504
505 The C<io_ns> variant doesn't start (activate) the newly created watcher.
506
507 =item $w->set ($fileno_or_fh, $eventmask)
508
509 Reconfigures the watcher, see the constructor above for details. Can be
510 called at any time.
511
512 =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
518 =item $current_eventmask = $w->events
519
520 =item $old_eventmask = $w->events ($new_eventmask)
521
522 Returns the previously set event mask and optionally set a new one.
523
524 =back
525
526
527 =head3 TIMER WATCHERS - relative and optionally repeating timeouts
528
529 =over 4
530
531 =item $w = EV::timer $after, $repeat, $callback
532
533 =item $w = EV::timer_ns $after, $repeat, $callback
534
535 =item $w = $loop->timer ($after, $repeat, $callback)
536
537 =item $w = $loop->timer_ns ($after, $repeat, $callback)
538
539 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
543 This means that the callback would be called roughly after C<$after>
544 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
549 The timer is based on a monotonic clock, that is, if somebody is sitting
550 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
553 The C<timer_ns> variant doesn't start (activate) the newly created watcher.
554
555 =item $w->set ($after, $repeat)
556
557 Reconfigures the watcher, see the constructor above for details. Can be called at
558 any time.
559
560 =item $w->again
561
562 Similar to the C<start> method, but has special semantics for repeating timers:
563
564 If the timer is active and non-repeating, it will be stopped.
565
566 If the timer is active and repeating, reset the timeout to occur
567 C<$repeat> seconds after now.
568
569 If the timer is inactive and repeating, start it using the repeat value.
570
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 =back
579
580
581 =head3 PERIODIC WATCHERS - to cron or not to cron?
582
583 =over 4
584
585 =item $w = EV::periodic $at, $interval, $reschedule_cb, $callback
586
587 =item $w = EV::periodic_ns $at, $interval, $reschedule_cb, $callback
588
589 =item $w = $loop->periodic ($at, $interval, $reschedule_cb, $callback)
590
591 =item $w = $loop->periodic_ns ($at, $interval, $reschedule_cb, $callback)
592
593 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
604 =item * absolute timer ($interval = $reschedule_cb = 0)
605
606 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
611 =item * repeating interval timer ($interval > 0, $reschedule_cb = 0)
612
613 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
626 Another way to think about it (for the mathematically inclined) is that
627 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 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
638 I<This callback MUST NOT stop or destroy this or any other periodic
639 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
643 It must return the next time to trigger, based on the passed time value
644 (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
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
664 =back
665
666 The C<periodic_ns> variant doesn't start (activate) the newly created watcher.
667
668 =item $w->set ($at, $interval, $reschedule_cb)
669
670 Reconfigures the watcher, see the constructor above for details. Can be called at
671 any time.
672
673 =item $w->again
674
675 Simply stops and starts the watcher again.
676
677 =item $time = $w->at
678
679 Return the time that the watcher is expected to trigger next.
680
681 =back
682
683
684 =head3 SIGNAL WATCHERS - signal me when a signal gets signalled!
685
686 =over 4
687
688 =item $w = EV::signal $signal, $callback
689
690 =item $w = EV::signal_ns $signal, $callback
691
692 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
695 EV will grab the signal for the process (the kernel only allows one
696 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 add/remove callbacks to C<%SIG>, so watch out.
699
700 You can have as many signal watchers per signal as you want.
701
702 The C<signal_ns> variant doesn't start (activate) the newly created watcher.
703
704 =item $w->set ($signal)
705
706 Reconfigures the watcher, see the constructor above for details. Can be
707 called at any time.
708
709 =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 =back
717
718
719 =head3 CHILD WATCHERS - watch out for process status changes
720
721 =over 4
722
723 =item $w = EV::child $pid, $trace, $callback
724
725 =item $w = EV::child_ns $pid, $trace, $callback
726
727 =item $w = $loop->child ($pid, $trace, $callback)
728
729 =item $w = $loop->child_ns ($pid, $trace, $callback)
730
731 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 a C<SIGCHLD>, EV will fetch the outstanding exit/wait status for all
736 changed/zombie children and call the callback.
737
738 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
746 You can have as many pid watchers per pid as you want, they will all be
747 called.
748
749 The C<child_ns> variant doesn't start (activate) the newly created watcher.
750
751 =item $w->set ($pid, $trace)
752
753 Reconfigures the watcher, see the constructor above for details. Can be called at
754 any time.
755
756 =item $current_pid = $w->pid
757
758 Returns the previously set process id and optionally set a new one.
759
760 =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 =back
771
772
773 =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 =item $w = $loop->stat ($path, $interval, $callback)
782
783 =item $w = $loop->stat_ns ($path, $interval, $callback)
784
785 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 =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 =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 =head3 IDLE WATCHERS - when you've got nothing better to do...
857
858 =over 4
859
860 =item $w = EV::idle $callback
861
862 =item $w = EV::idle_ns $callback
863
864 =item $w = $loop->idle ($callback)
865
866 =item $w = $loop->idle_ns ($callback)
867
868 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
877 The process will not block as long as any idle watchers are active, and
878 they will be called repeatedly until stopped.
879
880 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 The C<idle_ns> variant doesn't start (activate) the newly created watcher.
887
888 =back
889
890
891 =head3 PREPARE WATCHERS - customise your event loop!
892
893 =over 4
894
895 =item $w = EV::prepare $callback
896
897 =item $w = EV::prepare_ns $callback
898
899 =item $w = $loop->prepare ($callback)
900
901 =item $w = $loop->prepare_ns ($callback)
902
903 Call the callback just before the process would block. You can still
904 create/modify any watchers at this point.
905
906 See the EV::check watcher, below, for explanations and an example.
907
908 The C<prepare_ns> variant doesn't start (activate) the newly created watcher.
909
910 =back
911
912
913 =head3 CHECK WATCHERS - customise your event loop even more!
914
915 =over 4
916
917 =item $w = EV::check $callback
918
919 =item $w = EV::check_ns $callback
920
921 =item $w = $loop->check ($callback)
922
923 =item $w = $loop->check_ns ($callback)
924
925 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
928 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
933 our @snmp_watcher;
934
935 our $snmp_prepare = EV::prepare sub {
936 # do nothing unless active
937 $dispatcher->{_event_queue_h}
938 or return;
939
940 # make the dispatcher handle any outstanding stuff
941 ... not shown
942
943 # create an I/O watcher for each and every socket
944 @snmp_watcher = (
945 (map { EV::io $_, EV::READ, sub { } }
946 keys %{ $dispatcher->{_descriptors} }),
947
948 EV::timer +($event->[Net::SNMP::Dispatcher::_ACTIVE]
949 ? $event->[Net::SNMP::Dispatcher::_TIME] - EV::now : 0),
950 0, sub { },
951 );
952 };
953
954 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
959 our $snmp_check = EV::check sub {
960 # destroy all watchers
961 @snmp_watcher = ();
962
963 # make the dispatcher handle any new stuff
964 ... not shown
965 };
966
967 The callbacks of the created watchers will not be called as the watchers
968 are destroyed before this can happen (remember EV::check gets called
969 first).
970
971 The C<check_ns> variant doesn't start (activate) the newly created watcher.
972
973 =back
974
975
976 =head3 FORK WATCHERS - the audacity to resume the event loop after a fork
977
978 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
982 =over 4
983
984 =item $w = EV::fork $callback
985
986 =item $w = EV::fork_ns $callback
987
988 =item $w = $loop->fork ($callback)
989
990 =item $w = $loop->fork_ns ($callback)
991
992 Call the callback before the event loop is resumed in the child process
993 after a fork.
994
995 The C<fork_ns> variant doesn't start (activate) the newly created watcher.
996
997 =back
998
999
1000 =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 (locally installed as F<EV::libev>) for more details.
1010
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 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
1028 =over 4
1029
1030 =item $w = EV::embed $otherloop[, $callback]
1031
1032 =item $w = EV::embed_ns $otherloop[, $callback]
1033
1034 =item $w = $loop->embed ($otherloop[, $callback])
1035
1036 =item $w = $loop->embed_ns ($otherloop[, $callback])
1037
1038 Call the callback when the embedded event loop (C<$otherloop>) has any
1039 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
1043 The C<embed_ns> variant doesn't start (activate) the newly created watcher.
1044
1045 =back
1046
1047 =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 =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
1070 =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 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
1089 =head1 THREADS
1090
1091 Threads are not supported by this module in any way. Perl pseudo-threads
1092 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
1112 =cut
1113
1114 our $DIED = sub {
1115 warn "EV: error in callback (ignoring): $@";
1116 };
1117
1118 default_loop
1119 or die 'EV: cannot initialise libev backend. bad $ENV{LIBEV_FLAGS}?';
1120
1121 1;
1122
1123 =head1 SEE ALSO
1124
1125 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 coroutines with EV), L<Net::SNMP::EV> (asynchronous SNMP), L<AnyEvent> for
1128 event-loop agnostic and portable event driven programming.
1129
1130 =head1 AUTHOR
1131
1132 Marc Lehmann <schmorp@schmorp.de>
1133 http://home.schmorp.de/
1134
1135 =cut
1136