ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/AnyEvent/lib/AnyEvent.pm
Revision: 1.56
Committed: Thu Apr 24 03:10:03 2008 UTC (16 years, 2 months ago) by root
Branch: MAIN
Changes since 1.55: +15 -10 lines
Log Message:
qt

File Contents

# User Rev Content
1 root 1.1 =head1 NAME
2    
3 root 1.2 AnyEvent - provide framework for multiple event loops
4    
5 root 1.56 EV, Event, Coro::EV, Coro::Event, Glib, Tk, Perl, Event::Lib, Qt - various supported event loops
6 root 1.1
7     =head1 SYNOPSIS
8    
9 root 1.7 use AnyEvent;
10 root 1.2
11 root 1.14 my $w = AnyEvent->io (fh => $fh, poll => "r|w", cb => sub {
12 root 1.2 ...
13     });
14 root 1.5
15     my $w = AnyEvent->timer (after => $seconds, cb => sub {
16 root 1.2 ...
17     });
18    
19 root 1.52 my $w = AnyEvent->condvar; # stores whether a condition was flagged
20 root 1.14 $w->wait; # enters "main loop" till $condvar gets ->broadcast
21 root 1.5 $w->broadcast; # wake up current and all future wait's
22    
23 root 1.43 =head1 WHY YOU SHOULD USE THIS MODULE (OR NOT)
24 root 1.41
25     Glib, POE, IO::Async, Event... CPAN offers event models by the dozen
26     nowadays. So what is different about AnyEvent?
27    
28     Executive Summary: AnyEvent is I<compatible>, AnyEvent is I<free of
29     policy> and AnyEvent is I<small and efficient>.
30    
31     First and foremost, I<AnyEvent is not an event model> itself, it only
32     interfaces to whatever event model the main program happens to use in a
33     pragmatic way. For event models and certain classes of immortals alike,
34 root 1.53 the statement "there can only be one" is a bitter reality: In general,
35     only one event loop can be active at the same time in a process. AnyEvent
36     helps hiding the differences between those event loops.
37 root 1.41
38     The goal of AnyEvent is to offer module authors the ability to do event
39     programming (waiting for I/O or timer events) without subscribing to a
40     religion, a way of living, and most importantly: without forcing your
41     module users into the same thing by forcing them to use the same event
42     model you use.
43    
44 root 1.53 For modules like POE or IO::Async (which is a total misnomer as it is
45     actually doing all I/O I<synchronously>...), using them in your module is
46     like joining a cult: After you joined, you are dependent on them and you
47     cannot use anything else, as it is simply incompatible to everything that
48     isn't itself. What's worse, all the potential users of your module are
49     I<also> forced to use the same event loop you use.
50    
51     AnyEvent is different: AnyEvent + POE works fine. AnyEvent + Glib works
52     fine. AnyEvent + Tk works fine etc. etc. but none of these work together
53     with the rest: POE + IO::Async? no go. Tk + Event? no go. Again: if
54     your module uses one of those, every user of your module has to use it,
55     too. But if your module uses AnyEvent, it works transparently with all
56     event models it supports (including stuff like POE and IO::Async, as long
57     as those use one of the supported event loops. It is trivial to add new
58     event loops to AnyEvent, too, so it is future-proof).
59 root 1.41
60 root 1.53 In addition to being free of having to use I<the one and only true event
61 root 1.41 model>, AnyEvent also is free of bloat and policy: with POE or similar
62 root 1.53 modules, you get an enourmous amount of code and strict rules you have to
63     follow. AnyEvent, on the other hand, is lean and up to the point, by only
64     offering the functionality that is necessary, in as thin as a wrapper as
65 root 1.41 technically possible.
66    
67 root 1.45 Of course, if you want lots of policy (this can arguably be somewhat
68 root 1.46 useful) and you want to force your users to use the one and only event
69     model, you should I<not> use this module.
70 root 1.43
71 root 1.41
72 root 1.1 =head1 DESCRIPTION
73    
74 root 1.2 L<AnyEvent> provides an identical interface to multiple event loops. This
75 root 1.13 allows module authors to utilise an event loop without forcing module
76 root 1.2 users to use the same event loop (as only a single event loop can coexist
77     peacefully at any one time).
78    
79 root 1.53 The interface itself is vaguely similar, but not identical to the L<Event>
80 root 1.2 module.
81    
82 root 1.53 During the first call of any watcher-creation method, the module tries
83     to detect the currently loaded event loop by probing whether one of the
84     following modules is already loaded: L<Coro::EV>, L<Coro::Event>, L<EV>,
85     L<Event>, L<Glib>, L<Tk>. The first one found is used. If none are found,
86     the module tries to load these modules in the stated order. The first one
87     that can be successfully loaded will be used. If, after this, still none
88     could be found, AnyEvent will fall back to a pure-perl event loop, which
89     is not very efficient, but should work everywhere.
90 root 1.14
91     Because AnyEvent first checks for modules that are already loaded, loading
92 root 1.53 an event model explicitly before first using AnyEvent will likely make
93 root 1.14 that model the default. For example:
94    
95     use Tk;
96     use AnyEvent;
97    
98     # .. AnyEvent will likely default to Tk
99    
100 root 1.53 The I<likely> means that, if any module loads another event model and
101     starts using it, all bets are off. Maybe you should tell their authors to
102     use AnyEvent so their modules work together with others seamlessly...
103    
104 root 1.14 The pure-perl implementation of AnyEvent is called
105     C<AnyEvent::Impl::Perl>. Like other event modules you can load it
106     explicitly.
107    
108     =head1 WATCHERS
109    
110     AnyEvent has the central concept of a I<watcher>, which is an object that
111     stores relevant data for each kind of event you are waiting for, such as
112     the callback to call, the filehandle to watch, etc.
113    
114     These watchers are normal Perl objects with normal Perl lifetime. After
115 root 1.53 creating a watcher it will immediately "watch" for events and invoke the
116     callback when the event occurs (of course, only when the event model
117     is in control).
118    
119     To disable the watcher you have to destroy it (e.g. by setting the
120     variable you store it in to C<undef> or otherwise deleting all references
121     to it).
122 root 1.14
123     All watchers are created by calling a method on the C<AnyEvent> class.
124    
125 root 1.53 Many watchers either are used with "recursion" (repeating timers for
126     example), or need to refer to their watcher object in other ways.
127    
128     An any way to achieve that is this pattern:
129    
130     my $w; $w = AnyEvent->type (arg => value ..., cb => sub {
131     # you can use $w here, for example to undef it
132     undef $w;
133     });
134    
135     Note that C<my $w; $w => combination. This is necessary because in Perl,
136     my variables are only visible after the statement in which they are
137     declared.
138    
139 root 1.14 =head2 IO WATCHERS
140    
141 root 1.53 You can create an I/O watcher by calling the C<< AnyEvent->io >> method
142     with the following mandatory key-value pairs as arguments:
143 root 1.14
144 root 1.53 C<fh> the Perl I<file handle> (I<not> file descriptor) to watch for
145     events. C<poll> must be a string that is either C<r> or C<w>, which
146     creates a watcher waiting for "r"eadable or "w"ritable events,
147     respectively. C<cb> is the callback to invoke each time the file handle
148     becomes ready.
149    
150 root 1.56 As long as the I/O watcher exists it will keep the file descriptor or a
151     copy of it alive/open.
152 root 1.53
153     It is not allowed to close a file handle as long as any watcher is active
154     on the underlying file descriptor.
155    
156     Some event loops issue spurious readyness notifications, so you should
157     always use non-blocking calls when reading/writing from/to your file
158     handles.
159 root 1.14
160     Example:
161    
162     # wait for readability of STDIN, then read a line and disable the watcher
163     my $w; $w = AnyEvent->io (fh => \*STDIN, poll => 'r', cb => sub {
164     chomp (my $input = <STDIN>);
165     warn "read: $input\n";
166     undef $w;
167     });
168    
169 root 1.19 =head2 TIME WATCHERS
170 root 1.14
171 root 1.19 You can create a time watcher by calling the C<< AnyEvent->timer >>
172 root 1.14 method with the following mandatory arguments:
173    
174 root 1.53 C<after> specifies after how many seconds (fractional values are
175     supported) should the timer activate. C<cb> the callback to invoke in that
176     case.
177 root 1.14
178     The timer callback will be invoked at most once: if you want a repeating
179     timer you have to create a new watcher (this is a limitation by both Tk
180     and Glib).
181    
182     Example:
183    
184     # fire an event after 7.7 seconds
185     my $w = AnyEvent->timer (after => 7.7, cb => sub {
186     warn "timeout\n";
187     });
188    
189     # to cancel the timer:
190 root 1.37 undef $w;
191 root 1.14
192 root 1.53 Example 2:
193    
194     # fire an event after 0.5 seconds, then roughly every second
195     my $w;
196    
197     my $cb = sub {
198     # cancel the old timer while creating a new one
199     $w = AnyEvent->timer (after => 1, cb => $cb);
200     };
201    
202     # start the "loop" by creating the first watcher
203     $w = AnyEvent->timer (after => 0.5, cb => $cb);
204    
205     =head3 TIMING ISSUES
206    
207     There are two ways to handle timers: based on real time (relative, "fire
208     in 10 seconds") and based on wallclock time (absolute, "fire at 12
209     o'clock").
210    
211     While most event loops expect timers to specified in a relative way, they use
212     absolute time internally. This makes a difference when your clock "jumps",
213     for example, when ntp decides to set your clock backwards from the wrong 2014-01-01 to
214     2008-01-01, a watcher that you created to fire "after" a second might actually take
215     six years to finally fire.
216    
217     AnyEvent cannot compensate for this. The only event loop that is conscious
218     about these issues is L<EV>, which offers both relative (ev_timer) and
219     absolute (ev_periodic) timers.
220    
221     AnyEvent always prefers relative timers, if available, matching the
222     AnyEvent API.
223    
224     =head2 SIGNAL WATCHERS
225 root 1.14
226 root 1.53 You can watch for signals using a signal watcher, C<signal> is the signal
227     I<name> without any C<SIG> prefix, C<cb> is the Perl callback to
228     be invoked whenever a signal occurs.
229    
230     Multiple signals occurances can be clumped together into one callback
231     invocation, and callback invocation will be synchronous. synchronous means
232     that it might take a while until the signal gets handled by the process,
233     but it is guarenteed not to interrupt any other callbacks.
234    
235     The main advantage of using these watchers is that you can share a signal
236     between multiple watchers.
237    
238     This watcher might use C<%SIG>, so programs overwriting those signals
239     directly will likely not work correctly.
240    
241     Example: exit on SIGINT
242    
243     my $w = AnyEvent->signal (signal => "INT", cb => sub { exit 1 });
244    
245     =head2 CHILD PROCESS WATCHERS
246    
247     You can also watch on a child process exit and catch its exit status.
248    
249     The child process is specified by the C<pid> argument (if set to C<0>, it
250     watches for any child process exit). The watcher will trigger as often
251     as status change for the child are received. This works by installing a
252     signal handler for C<SIGCHLD>. The callback will be called with the pid
253     and exit status (as returned by waitpid).
254    
255     Example: wait for pid 1333
256    
257     my $w = AnyEvent->child (
258     pid => 1333,
259     cb => sub {
260     my ($pid, $status) = @_;
261     warn "pid $pid exited with status $status";
262     },
263     );
264    
265     =head2 CONDITION VARIABLES
266    
267     Condition variables can be created by calling the C<< AnyEvent->condvar >>
268 root 1.14 method without any arguments.
269    
270 root 1.53 A condition variable waits for a condition - precisely that the C<<
271 root 1.14 ->broadcast >> method has been called.
272    
273 root 1.53 They are very useful to signal that a condition has been fulfilled, for
274     example, if you write a module that does asynchronous http requests,
275     then a condition variable would be the ideal candidate to signal the
276     availability of results.
277    
278     You can also use condition variables to block your main program until
279     an event occurs - for example, you could C<< ->wait >> in your main
280     program until the user clicks the Quit button in your app, which would C<<
281     ->broadcast >> the "quit" event.
282    
283     Note that condition variables recurse into the event loop - if you have
284     two pirces of code that call C<< ->wait >> in a round-robbin fashion, you
285     lose. Therefore, condition variables are good to export to your caller, but
286     you should avoid making a blocking wait yourself, at least in callbacks,
287     as this asks for trouble.
288 root 1.41
289 root 1.53 This object has two methods:
290 root 1.2
291 root 1.1 =over 4
292    
293 root 1.14 =item $cv->wait
294    
295     Wait (blocking if necessary) until the C<< ->broadcast >> method has been
296     called on c<$cv>, while servicing other watchers normally.
297    
298     You can only wait once on a condition - additional calls will return
299     immediately.
300    
301 root 1.47 Not all event models support a blocking wait - some die in that case
302 root 1.53 (programs might want to do that to stay interactive), so I<if you are
303     using this from a module, never require a blocking wait>, but let the
304 root 1.52 caller decide whether the call will block or not (for example, by coupling
305 root 1.47 condition variables with some kind of request results and supporting
306     callbacks so the caller knows that getting the result will not block,
307     while still suppporting blocking waits if the caller so desires).
308    
309     Another reason I<never> to C<< ->wait >> in a module is that you cannot
310     sensibly have two C<< ->wait >>'s in parallel, as that would require
311     multiple interpreters or coroutines/threads, none of which C<AnyEvent>
312 root 1.53 can supply (the coroutine-aware backends L<AnyEvent::Impl::CoroEV> and
313     L<AnyEvent::Impl::CoroEvent> explicitly support concurrent C<< ->wait >>'s
314     from different coroutines, however).
315 root 1.47
316 root 1.14 =item $cv->broadcast
317    
318     Flag the condition as ready - a running C<< ->wait >> and all further
319 root 1.53 calls to C<wait> will (eventually) return after this method has been
320     called. If nobody is waiting the broadcast will be remembered..
321    
322     =back
323 root 1.14
324     Example:
325    
326     # wait till the result is ready
327     my $result_ready = AnyEvent->condvar;
328    
329     # do something such as adding a timer
330     # or socket watcher the calls $result_ready->broadcast
331     # when the "result" is ready.
332 root 1.53 # in this case, we simply use a timer:
333     my $w = AnyEvent->timer (
334     after => 1,
335     cb => sub { $result_ready->broadcast },
336     );
337 root 1.14
338 root 1.53 # this "blocks" (while handling events) till the watcher
339     # calls broadcast
340 root 1.14 $result_ready->wait;
341    
342 root 1.53 =head1 GLOBAL VARIABLES AND FUNCTIONS
343 root 1.16
344     =over 4
345    
346     =item $AnyEvent::MODEL
347    
348     Contains C<undef> until the first watcher is being created. Then it
349     contains the event model that is being used, which is the name of the
350     Perl class implementing the model. This class is usually one of the
351     C<AnyEvent::Impl:xxx> modules, but can be any other class in the case
352     AnyEvent has been extended at runtime (e.g. in I<rxvt-unicode>).
353    
354     The known classes so far are:
355    
356 root 1.33 AnyEvent::Impl::CoroEV based on Coro::EV, best choice.
357 root 1.50 AnyEvent::Impl::CoroEvent based on Coro::Event, second best choice.
358 root 1.56 AnyEvent::Impl::EV based on EV (an interface to libev, best choice).
359     AnyEvent::Impl::Event based on Event, second best choice.
360 root 1.48 AnyEvent::Impl::Glib based on Glib, third-best choice.
361 root 1.16 AnyEvent::Impl::Tk based on Tk, very bad choice.
362 root 1.48 AnyEvent::Impl::Perl pure-perl implementation, inefficient but portable.
363 root 1.56 AnyEvent::Impl::Qt based on Qt, cannot be autoprobed (see its docs).
364 root 1.55 AnyEvent::Impl::EventLib based on Event::Lib, leaks memory and worse.
365 root 1.16
366 root 1.19 =item AnyEvent::detect
367    
368 root 1.53 Returns C<$AnyEvent::MODEL>, forcing autodetection of the event model
369     if necessary. You should only call this function right before you would
370     have created an AnyEvent watcher anyway, that is, as late as possible at
371     runtime.
372 root 1.19
373 root 1.16 =back
374    
375 root 1.14 =head1 WHAT TO DO IN A MODULE
376    
377 root 1.53 As a module author, you should C<use AnyEvent> and call AnyEvent methods
378 root 1.14 freely, but you should not load a specific event module or rely on it.
379    
380 root 1.53 Be careful when you create watchers in the module body - AnyEvent will
381 root 1.14 decide which event module to use as soon as the first method is called, so
382     by calling AnyEvent in your module body you force the user of your module
383     to load the event module first.
384    
385 root 1.53 Never call C<< ->wait >> on a condition variable unless you I<know> that
386     the C<< ->broadcast >> method has been called on it already. This is
387     because it will stall the whole program, and the whole point of using
388     events is to stay interactive.
389    
390     It is fine, however, to call C<< ->wait >> when the user of your module
391     requests it (i.e. if you create a http request object ad have a method
392     called C<results> that returns the results, it should call C<< ->wait >>
393     freely, as the user of your module knows what she is doing. always).
394    
395 root 1.14 =head1 WHAT TO DO IN THE MAIN PROGRAM
396    
397     There will always be a single main program - the only place that should
398     dictate which event model to use.
399    
400     If it doesn't care, it can just "use AnyEvent" and use it itself, or not
401 root 1.53 do anything special (it does not need to be event-based) and let AnyEvent
402     decide which implementation to chose if some module relies on it.
403 root 1.14
404 root 1.53 If the main program relies on a specific event model. For example, in
405     Gtk2 programs you have to rely on the Glib module. You should load the
406     event module before loading AnyEvent or any module that uses it: generally
407     speaking, you should load it as early as possible. The reason is that
408     modules might create watchers when they are loaded, and AnyEvent will
409     decide on the event model to use as soon as it creates watchers, and it
410     might chose the wrong one unless you load the correct one yourself.
411 root 1.14
412     You can chose to use a rather inefficient pure-perl implementation by
413 root 1.53 loading the C<AnyEvent::Impl::Perl> module, which gives you similar
414     behaviour everywhere, but letting AnyEvent chose is generally better.
415 root 1.14
416 root 1.1 =cut
417    
418     package AnyEvent;
419    
420 root 1.2 no warnings;
421 root 1.19 use strict;
422 root 1.24
423 root 1.1 use Carp;
424    
425 root 1.54 our $VERSION = '3.12';
426 root 1.2 our $MODEL;
427 root 1.1
428 root 1.2 our $AUTOLOAD;
429     our @ISA;
430 root 1.1
431 root 1.7 our $verbose = $ENV{PERL_ANYEVENT_VERBOSE}*1;
432    
433 root 1.8 our @REGISTRY;
434    
435 root 1.1 my @models = (
436 root 1.33 [Coro::EV:: => AnyEvent::Impl::CoroEV::],
437 root 1.50 [Coro::Event:: => AnyEvent::Impl::CoroEvent::],
438 root 1.33 [EV:: => AnyEvent::Impl::EV::],
439 root 1.18 [Event:: => AnyEvent::Impl::Event::],
440     [Glib:: => AnyEvent::Impl::Glib::],
441     [Tk:: => AnyEvent::Impl::Tk::],
442     [AnyEvent::Impl::Perl:: => AnyEvent::Impl::Perl::],
443 root 1.56 );
444     my @models_detect = (
445     [Qt:: => AnyEvent::Impl::Qt::], # requires special main program
446     [Event::Lib:: => AnyEvent::Impl::EventLib::], # too buggy
447 root 1.1 );
448    
449 root 1.56 our %method = map +($_ => 1), qw(io timer signal child condvar broadcast wait one_event DESTROY);
450 root 1.3
451 root 1.19 sub detect() {
452     unless ($MODEL) {
453     no strict 'refs';
454 root 1.1
455 root 1.55 if ($ENV{PERL_ANYEVENT_MODEL} =~ /^([a-zA-Z]+)$/) {
456     my $model = "AnyEvent::Impl::$1";
457     if (eval "require $model") {
458     $MODEL = $model;
459     warn "AnyEvent: loaded model '$model' (forced by \$PERL_ANYEVENT_MODEL), using it.\n" if $verbose > 1;
460 root 1.2 }
461 root 1.1 }
462    
463 root 1.55 # check for already loaded models
464 root 1.2 unless ($MODEL) {
465 root 1.56 for (@REGISTRY, @models, @models_detect) {
466 root 1.8 my ($package, $model) = @$_;
467 root 1.55 if (${"$package\::VERSION"} > 0) {
468     if (eval "require $model") {
469     $MODEL = $model;
470     warn "AnyEvent: autodetected model '$model', using it.\n" if $verbose > 1;
471     last;
472     }
473 root 1.8 }
474 root 1.2 }
475    
476 root 1.55 unless ($MODEL) {
477     # try to load a model
478    
479     for (@REGISTRY, @models) {
480     my ($package, $model) = @$_;
481     if (eval "require $package"
482     and ${"$package\::VERSION"} > 0
483     and eval "require $model") {
484     $MODEL = $model;
485     warn "AnyEvent: autoprobed model '$model', using it.\n" if $verbose > 1;
486     last;
487     }
488     }
489    
490     $MODEL
491     or die "No event module selected for AnyEvent and autodetect failed. Install any one of these modules: EV (or Coro+EV), Event (or Coro+Event) or Glib.";
492     }
493 root 1.1 }
494 root 1.19
495     unshift @ISA, $MODEL;
496     push @{"$MODEL\::ISA"}, "AnyEvent::Base";
497 root 1.1 }
498    
499 root 1.19 $MODEL
500     }
501    
502     sub AUTOLOAD {
503     (my $func = $AUTOLOAD) =~ s/.*://;
504    
505     $method{$func}
506     or croak "$func: not a valid method for AnyEvent objects";
507    
508     detect unless $MODEL;
509 root 1.2
510     my $class = shift;
511 root 1.18 $class->$func (@_);
512 root 1.1 }
513    
514 root 1.19 package AnyEvent::Base;
515    
516 root 1.20 # default implementation for ->condvar, ->wait, ->broadcast
517    
518     sub condvar {
519     bless \my $flag, "AnyEvent::Base::CondVar"
520     }
521    
522     sub AnyEvent::Base::CondVar::broadcast {
523     ${$_[0]}++;
524     }
525    
526     sub AnyEvent::Base::CondVar::wait {
527     AnyEvent->one_event while !${$_[0]};
528     }
529    
530     # default implementation for ->signal
531 root 1.19
532     our %SIG_CB;
533    
534     sub signal {
535     my (undef, %arg) = @_;
536    
537     my $signal = uc $arg{signal}
538     or Carp::croak "required option 'signal' is missing";
539    
540 root 1.31 $SIG_CB{$signal}{$arg{cb}} = $arg{cb};
541 root 1.19 $SIG{$signal} ||= sub {
542 root 1.20 $_->() for values %{ $SIG_CB{$signal} || {} };
543 root 1.19 };
544    
545 root 1.20 bless [$signal, $arg{cb}], "AnyEvent::Base::Signal"
546 root 1.19 }
547    
548     sub AnyEvent::Base::Signal::DESTROY {
549     my ($signal, $cb) = @{$_[0]};
550    
551     delete $SIG_CB{$signal}{$cb};
552    
553     $SIG{$signal} = 'DEFAULT' unless keys %{ $SIG_CB{$signal} };
554     }
555    
556 root 1.20 # default implementation for ->child
557    
558     our %PID_CB;
559     our $CHLD_W;
560 root 1.37 our $CHLD_DELAY_W;
561 root 1.20 our $PID_IDLE;
562     our $WNOHANG;
563    
564     sub _child_wait {
565 root 1.38 while (0 < (my $pid = waitpid -1, $WNOHANG)) {
566 root 1.32 $_->($pid, $?) for (values %{ $PID_CB{$pid} || {} }),
567     (values %{ $PID_CB{0} || {} });
568 root 1.20 }
569    
570     undef $PID_IDLE;
571     }
572    
573 root 1.37 sub _sigchld {
574     # make sure we deliver these changes "synchronous" with the event loop.
575     $CHLD_DELAY_W ||= AnyEvent->timer (after => 0, cb => sub {
576     undef $CHLD_DELAY_W;
577     &_child_wait;
578     });
579     }
580    
581 root 1.20 sub child {
582     my (undef, %arg) = @_;
583    
584 root 1.31 defined (my $pid = $arg{pid} + 0)
585 root 1.20 or Carp::croak "required option 'pid' is missing";
586    
587     $PID_CB{$pid}{$arg{cb}} = $arg{cb};
588    
589     unless ($WNOHANG) {
590     $WNOHANG = eval { require POSIX; &POSIX::WNOHANG } || 1;
591     }
592    
593 root 1.23 unless ($CHLD_W) {
594 root 1.37 $CHLD_W = AnyEvent->signal (signal => 'CHLD', cb => \&_sigchld);
595     # child could be a zombie already, so make at least one round
596     &_sigchld;
597 root 1.23 }
598 root 1.20
599     bless [$pid, $arg{cb}], "AnyEvent::Base::Child"
600     }
601    
602     sub AnyEvent::Base::Child::DESTROY {
603     my ($pid, $cb) = @{$_[0]};
604    
605     delete $PID_CB{$pid}{$cb};
606     delete $PID_CB{$pid} unless keys %{ $PID_CB{$pid} };
607    
608     undef $CHLD_W unless keys %PID_CB;
609     }
610    
611 root 1.8 =head1 SUPPLYING YOUR OWN EVENT MODEL INTERFACE
612    
613 root 1.53 This is an advanced topic that you do not normally need to use AnyEvent in
614     a module. This section is only of use to event loop authors who want to
615     provide AnyEvent compatibility.
616    
617 root 1.8 If you need to support another event library which isn't directly
618     supported by AnyEvent, you can supply your own interface to it by
619 root 1.11 pushing, before the first watcher gets created, the package name of
620 root 1.8 the event module and the package name of the interface to use onto
621     C<@AnyEvent::REGISTRY>. You can do that before and even without loading
622 root 1.53 AnyEvent, so it is reasonably cheap.
623 root 1.8
624     Example:
625    
626     push @AnyEvent::REGISTRY, [urxvt => urxvt::anyevent::];
627    
628 root 1.12 This tells AnyEvent to (literally) use the C<urxvt::anyevent::>
629 root 1.53 package/class when it finds the C<urxvt> package/module is already loaded.
630    
631     When AnyEvent is loaded and asked to find a suitable event model, it
632     will first check for the presence of urxvt by trying to C<use> the
633     C<urxvt::anyevent> module.
634    
635     The class should provide implementations for all watcher types. See
636     L<AnyEvent::Impl::EV> (source code), L<AnyEvent::Impl::Glib> (Source code)
637     and so on for actual examples. Use C<perldoc -m AnyEvent::Impl::Glib> to
638     see the sources.
639    
640     If you don't provide C<signal> and C<child> watchers than AnyEvent will
641     provide suitable (hopefully) replacements.
642    
643     The above example isn't fictitious, the I<rxvt-unicode> (a.k.a. urxvt)
644     terminal emulator uses the above line as-is. An interface isn't included
645     in AnyEvent because it doesn't make sense outside the embedded interpreter
646     inside I<rxvt-unicode>, and it is updated and maintained as part of the
647 root 1.8 I<rxvt-unicode> distribution.
648    
649 root 1.12 I<rxvt-unicode> also cheats a bit by not providing blocking access to
650     condition variables: code blocking while waiting for a condition will
651     C<die>. This still works with most modules/usages, and blocking calls must
652 root 1.53 not be done in an interactive application, so it makes sense.
653 root 1.12
654 root 1.7 =head1 ENVIRONMENT VARIABLES
655    
656     The following environment variables are used by this module:
657    
658 root 1.55 =over 4
659    
660     =item C<PERL_ANYEVENT_VERBOSE>
661    
662     When set to C<2> or higher, cause AnyEvent to report to STDERR which event
663     model it chooses.
664    
665     =item C<PERL_ANYEVENT_MODEL>
666    
667     This can be used to specify the event model to be used by AnyEvent, before
668     autodetection and -probing kicks in. It must be a string consisting
669     entirely of ASCII letters. The string C<AnyEvent::Impl::> gets prepended
670     and the resulting module name is loaded and if the load was successful,
671     used as event model. If it fails to load AnyEvent will proceed with
672     autodetection and -probing.
673    
674     This functionality might change in future versions.
675    
676     For example, to force the pure perl model (L<AnyEvent::Impl::Perl>) you
677     could start your program like this:
678    
679     PERL_ANYEVENT_MODEL=Perl perl ...
680    
681     =back
682 root 1.7
683 root 1.53 =head1 EXAMPLE PROGRAM
684 root 1.2
685 root 1.53 The following program uses an IO watcher to read data from STDIN, a timer
686     to display a message once per second, and a condition variable to quit the
687     program when the user enters quit:
688 root 1.2
689     use AnyEvent;
690    
691     my $cv = AnyEvent->condvar;
692    
693 root 1.53 my $io_watcher = AnyEvent->io (
694     fh => \*STDIN,
695     poll => 'r',
696     cb => sub {
697     warn "io event <$_[0]>\n"; # will always output <r>
698     chomp (my $input = <STDIN>); # read a line
699     warn "read: $input\n"; # output what has been read
700     $cv->broadcast if $input =~ /^q/i; # quit program if /^q/i
701     },
702     );
703 root 1.2
704     my $time_watcher; # can only be used once
705    
706     sub new_timer {
707     $timer = AnyEvent->timer (after => 1, cb => sub {
708     warn "timeout\n"; # print 'timeout' about every second
709     &new_timer; # and restart the time
710     });
711     }
712    
713     new_timer; # create first timer
714    
715     $cv->wait; # wait until user enters /^q/i
716    
717 root 1.5 =head1 REAL-WORLD EXAMPLE
718    
719     Consider the L<Net::FCP> module. It features (among others) the following
720     API calls, which are to freenet what HTTP GET requests are to http:
721    
722     my $data = $fcp->client_get ($url); # blocks
723    
724     my $transaction = $fcp->txn_client_get ($url); # does not block
725     $transaction->cb ( sub { ... } ); # set optional result callback
726     my $data = $transaction->result; # possibly blocks
727    
728     The C<client_get> method works like C<LWP::Simple::get>: it requests the
729     given URL and waits till the data has arrived. It is defined to be:
730    
731     sub client_get { $_[0]->txn_client_get ($_[1])->result }
732    
733     And in fact is automatically generated. This is the blocking API of
734     L<Net::FCP>, and it works as simple as in any other, similar, module.
735    
736     More complicated is C<txn_client_get>: It only creates a transaction
737     (completion, result, ...) object and initiates the transaction.
738    
739     my $txn = bless { }, Net::FCP::Txn::;
740    
741     It also creates a condition variable that is used to signal the completion
742     of the request:
743    
744     $txn->{finished} = AnyAvent->condvar;
745    
746     It then creates a socket in non-blocking mode.
747    
748     socket $txn->{fh}, ...;
749     fcntl $txn->{fh}, F_SETFL, O_NONBLOCK;
750     connect $txn->{fh}, ...
751     and !$!{EWOULDBLOCK}
752     and !$!{EINPROGRESS}
753     and Carp::croak "unable to connect: $!\n";
754    
755 root 1.6 Then it creates a write-watcher which gets called whenever an error occurs
756 root 1.5 or the connection succeeds:
757    
758     $txn->{w} = AnyEvent->io (fh => $txn->{fh}, poll => 'w', cb => sub { $txn->fh_ready_w });
759    
760     And returns this transaction object. The C<fh_ready_w> callback gets
761     called as soon as the event loop detects that the socket is ready for
762     writing.
763    
764     The C<fh_ready_w> method makes the socket blocking again, writes the
765     request data and replaces the watcher by a read watcher (waiting for reply
766     data). The actual code is more complicated, but that doesn't matter for
767     this example:
768    
769     fcntl $txn->{fh}, F_SETFL, 0;
770     syswrite $txn->{fh}, $txn->{request}
771     or die "connection or write error";
772     $txn->{w} = AnyEvent->io (fh => $txn->{fh}, poll => 'r', cb => sub { $txn->fh_ready_r });
773    
774     Again, C<fh_ready_r> waits till all data has arrived, and then stores the
775     result and signals any possible waiters that the request ahs finished:
776    
777     sysread $txn->{fh}, $txn->{buf}, length $txn->{$buf};
778    
779     if (end-of-file or data complete) {
780     $txn->{result} = $txn->{buf};
781     $txn->{finished}->broadcast;
782 root 1.6 $txb->{cb}->($txn) of $txn->{cb}; # also call callback
783 root 1.5 }
784    
785     The C<result> method, finally, just waits for the finished signal (if the
786     request was already finished, it doesn't wait, of course, and returns the
787     data:
788    
789     $txn->{finished}->wait;
790 root 1.6 return $txn->{result};
791 root 1.5
792     The actual code goes further and collects all errors (C<die>s, exceptions)
793     that occured during request processing. The C<result> method detects
794 root 1.52 whether an exception as thrown (it is stored inside the $txn object)
795 root 1.5 and just throws the exception, which means connection errors and other
796     problems get reported tot he code that tries to use the result, not in a
797     random callback.
798    
799     All of this enables the following usage styles:
800    
801     1. Blocking:
802    
803     my $data = $fcp->client_get ($url);
804    
805 root 1.49 2. Blocking, but running in parallel:
806 root 1.5
807     my @datas = map $_->result,
808     map $fcp->txn_client_get ($_),
809     @urls;
810    
811     Both blocking examples work without the module user having to know
812     anything about events.
813    
814 root 1.49 3a. Event-based in a main program, using any supported event module:
815 root 1.5
816 root 1.49 use EV;
817 root 1.5
818     $fcp->txn_client_get ($url)->cb (sub {
819     my $txn = shift;
820     my $data = $txn->result;
821     ...
822     });
823    
824 root 1.49 EV::loop;
825 root 1.5
826     3b. The module user could use AnyEvent, too:
827    
828     use AnyEvent;
829    
830     my $quit = AnyEvent->condvar;
831    
832     $fcp->txn_client_get ($url)->cb (sub {
833     ...
834     $quit->broadcast;
835     });
836    
837     $quit->wait;
838    
839 root 1.55 =head1 FORK
840    
841     Most event libraries are not fork-safe. The ones who are usually are
842     because they are so inefficient. Only L<EV> is fully fork-aware.
843    
844     If you have to fork, you must either do so I<before> creating your first
845     watcher OR you must not use AnyEvent at all in the child.
846    
847     =head1 SECURITY CONSIDERATIONS
848    
849     AnyEvent can be forced to load any event model via
850     $ENV{PERL_ANYEVENT_MODEL}. While this cannot (to my knowledge) be used to
851     execute arbitrary code or directly gain access, it can easily be used to
852     make the program hang or malfunction in subtle ways, as AnyEvent watchers
853     will not be active when the program uses a different event model than
854     specified in the variable.
855    
856     You can make AnyEvent completely ignore this variable by deleting it
857     before the first watcher gets created, e.g. with a C<BEGIN> block:
858    
859     BEGIN { delete $ENV{PERL_ANYEVENT_MODEL} }
860    
861     use AnyEvent;
862    
863 root 1.2 =head1 SEE ALSO
864    
865 root 1.49 Event modules: L<Coro::EV>, L<EV>, L<EV::Glib>, L<Glib::EV>,
866 root 1.55 L<Coro::Event>, L<Event>, L<Glib::Event>, L<Glib>, L<Coro>, L<Tk>,
867 root 1.56 L<Event::Lib>, L<Qt>.
868 root 1.5
869 root 1.49 Implementations: L<AnyEvent::Impl::CoroEV>, L<AnyEvent::Impl::EV>,
870 root 1.55 L<AnyEvent::Impl::CoroEvent>, L<AnyEvent::Impl::Event>, L<AnyEvent::Impl::Glib>,
871 root 1.56 L<AnyEvent::Impl::Tk>, L<AnyEvent::Impl::Perl>, L<AnyEvent::Impl::EventLib>,
872     L<AnyEvent::Impl::Qt>.
873 root 1.5
874 root 1.49 Nontrivial usage examples: L<Net::FCP>, L<Net::XMPP2>.
875 root 1.2
876 root 1.54 =head1 AUTHOR
877    
878     Marc Lehmann <schmorp@schmorp.de>
879     http://home.schmorp.de/
880 root 1.2
881     =cut
882    
883     1
884 root 1.1