ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/EV/EV.pm
Revision: 1.103
Committed: Thu Oct 2 07:49:09 2008 UTC (15 years, 7 months ago) by root
Branch: MAIN
Changes since 1.102: +4 -2 lines
Log Message:
*** empty log message ***

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