ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/AnyEvent/lib/AnyEvent.pm
Revision: 1.55
Committed: Wed Apr 23 11:25:42 2008 UTC (16 years, 2 months ago) by root
Branch: MAIN
Changes since 1.54: +84 -25 lines
Log Message:
*** empty log message ***

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.55 EV, Event, Coro::EV, Coro::Event, Glib, Tk, Perl, Event::Lib - 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     File handles will be kept alive, so as long as the watcher exists, the
151     file handle exists, too.
152    
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.33 AnyEvent::Impl::EV based on EV (an interface to libev, also best choice).
359 root 1.29 AnyEvent::Impl::Event based on Event, also 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.55 AnyEvent::Impl::EventLib based on Event::Lib, leaks memory and worse.
364 root 1.16
365 root 1.19 =item AnyEvent::detect
366    
367 root 1.53 Returns C<$AnyEvent::MODEL>, forcing autodetection of the event model
368     if necessary. You should only call this function right before you would
369     have created an AnyEvent watcher anyway, that is, as late as possible at
370     runtime.
371 root 1.19
372 root 1.16 =back
373    
374 root 1.14 =head1 WHAT TO DO IN A MODULE
375    
376 root 1.53 As a module author, you should C<use AnyEvent> and call AnyEvent methods
377 root 1.14 freely, but you should not load a specific event module or rely on it.
378    
379 root 1.53 Be careful when you create watchers in the module body - AnyEvent will
380 root 1.14 decide which event module to use as soon as the first method is called, so
381     by calling AnyEvent in your module body you force the user of your module
382     to load the event module first.
383    
384 root 1.53 Never call C<< ->wait >> on a condition variable unless you I<know> that
385     the C<< ->broadcast >> method has been called on it already. This is
386     because it will stall the whole program, and the whole point of using
387     events is to stay interactive.
388    
389     It is fine, however, to call C<< ->wait >> when the user of your module
390     requests it (i.e. if you create a http request object ad have a method
391     called C<results> that returns the results, it should call C<< ->wait >>
392     freely, as the user of your module knows what she is doing. always).
393    
394 root 1.14 =head1 WHAT TO DO IN THE MAIN PROGRAM
395    
396     There will always be a single main program - the only place that should
397     dictate which event model to use.
398    
399     If it doesn't care, it can just "use AnyEvent" and use it itself, or not
400 root 1.53 do anything special (it does not need to be event-based) and let AnyEvent
401     decide which implementation to chose if some module relies on it.
402 root 1.14
403 root 1.53 If the main program relies on a specific event model. For example, in
404     Gtk2 programs you have to rely on the Glib module. You should load the
405     event module before loading AnyEvent or any module that uses it: generally
406     speaking, you should load it as early as possible. The reason is that
407     modules might create watchers when they are loaded, and AnyEvent will
408     decide on the event model to use as soon as it creates watchers, and it
409     might chose the wrong one unless you load the correct one yourself.
410 root 1.14
411     You can chose to use a rather inefficient pure-perl implementation by
412 root 1.53 loading the C<AnyEvent::Impl::Perl> module, which gives you similar
413     behaviour everywhere, but letting AnyEvent chose is generally better.
414 root 1.14
415 root 1.1 =cut
416    
417     package AnyEvent;
418    
419 root 1.2 no warnings;
420 root 1.19 use strict;
421 root 1.24
422 root 1.1 use Carp;
423    
424 root 1.54 our $VERSION = '3.12';
425 root 1.2 our $MODEL;
426 root 1.1
427 root 1.2 our $AUTOLOAD;
428     our @ISA;
429 root 1.1
430 root 1.7 our $verbose = $ENV{PERL_ANYEVENT_VERBOSE}*1;
431    
432 root 1.8 our @REGISTRY;
433    
434 root 1.1 my @models = (
435 root 1.33 [Coro::EV:: => AnyEvent::Impl::CoroEV::],
436 root 1.50 [Coro::Event:: => AnyEvent::Impl::CoroEvent::],
437 root 1.33 [EV:: => AnyEvent::Impl::EV::],
438 root 1.18 [Event:: => AnyEvent::Impl::Event::],
439     [Glib:: => AnyEvent::Impl::Glib::],
440     [Tk:: => AnyEvent::Impl::Tk::],
441     [AnyEvent::Impl::Perl:: => AnyEvent::Impl::Perl::],
442 root 1.55 [Event::Lib:: => AnyEvent::Impl::EventLib::],
443 root 1.1 );
444    
445 root 1.19 our %method = map +($_ => 1), qw(io timer condvar broadcast wait signal one_event DESTROY);
446 root 1.3
447 root 1.19 sub detect() {
448     unless ($MODEL) {
449     no strict 'refs';
450 root 1.1
451 root 1.55 if ($ENV{PERL_ANYEVENT_MODEL} =~ /^([a-zA-Z]+)$/) {
452     my $model = "AnyEvent::Impl::$1";
453     if (eval "require $model") {
454     $MODEL = $model;
455     warn "AnyEvent: loaded model '$model' (forced by \$PERL_ANYEVENT_MODEL), using it.\n" if $verbose > 1;
456 root 1.2 }
457 root 1.1 }
458    
459 root 1.55 # check for already loaded models
460 root 1.2 unless ($MODEL) {
461 root 1.8 for (@REGISTRY, @models) {
462     my ($package, $model) = @$_;
463 root 1.55 if (${"$package\::VERSION"} > 0) {
464     if (eval "require $model") {
465     $MODEL = $model;
466     warn "AnyEvent: autodetected model '$model', using it.\n" if $verbose > 1;
467     last;
468     }
469 root 1.8 }
470 root 1.2 }
471    
472 root 1.55 unless ($MODEL) {
473     # try to load a model
474    
475     for (@REGISTRY, @models) {
476     my ($package, $model) = @$_;
477     if (eval "require $package"
478     and ${"$package\::VERSION"} > 0
479     and eval "require $model") {
480     $MODEL = $model;
481     warn "AnyEvent: autoprobed model '$model', using it.\n" if $verbose > 1;
482     last;
483     }
484     }
485    
486     $MODEL
487     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.";
488     }
489 root 1.1 }
490 root 1.19
491     unshift @ISA, $MODEL;
492     push @{"$MODEL\::ISA"}, "AnyEvent::Base";
493 root 1.1 }
494    
495 root 1.19 $MODEL
496     }
497    
498     sub AUTOLOAD {
499     (my $func = $AUTOLOAD) =~ s/.*://;
500    
501     $method{$func}
502     or croak "$func: not a valid method for AnyEvent objects";
503    
504     detect unless $MODEL;
505 root 1.2
506     my $class = shift;
507 root 1.18 $class->$func (@_);
508 root 1.1 }
509    
510 root 1.19 package AnyEvent::Base;
511    
512 root 1.20 # default implementation for ->condvar, ->wait, ->broadcast
513    
514     sub condvar {
515     bless \my $flag, "AnyEvent::Base::CondVar"
516     }
517    
518     sub AnyEvent::Base::CondVar::broadcast {
519     ${$_[0]}++;
520     }
521    
522     sub AnyEvent::Base::CondVar::wait {
523     AnyEvent->one_event while !${$_[0]};
524     }
525    
526     # default implementation for ->signal
527 root 1.19
528     our %SIG_CB;
529    
530     sub signal {
531     my (undef, %arg) = @_;
532    
533     my $signal = uc $arg{signal}
534     or Carp::croak "required option 'signal' is missing";
535    
536 root 1.31 $SIG_CB{$signal}{$arg{cb}} = $arg{cb};
537 root 1.19 $SIG{$signal} ||= sub {
538 root 1.20 $_->() for values %{ $SIG_CB{$signal} || {} };
539 root 1.19 };
540    
541 root 1.20 bless [$signal, $arg{cb}], "AnyEvent::Base::Signal"
542 root 1.19 }
543    
544     sub AnyEvent::Base::Signal::DESTROY {
545     my ($signal, $cb) = @{$_[0]};
546    
547     delete $SIG_CB{$signal}{$cb};
548    
549     $SIG{$signal} = 'DEFAULT' unless keys %{ $SIG_CB{$signal} };
550     }
551    
552 root 1.20 # default implementation for ->child
553    
554     our %PID_CB;
555     our $CHLD_W;
556 root 1.37 our $CHLD_DELAY_W;
557 root 1.20 our $PID_IDLE;
558     our $WNOHANG;
559    
560     sub _child_wait {
561 root 1.38 while (0 < (my $pid = waitpid -1, $WNOHANG)) {
562 root 1.32 $_->($pid, $?) for (values %{ $PID_CB{$pid} || {} }),
563     (values %{ $PID_CB{0} || {} });
564 root 1.20 }
565    
566     undef $PID_IDLE;
567     }
568    
569 root 1.37 sub _sigchld {
570     # make sure we deliver these changes "synchronous" with the event loop.
571     $CHLD_DELAY_W ||= AnyEvent->timer (after => 0, cb => sub {
572     undef $CHLD_DELAY_W;
573     &_child_wait;
574     });
575     }
576    
577 root 1.20 sub child {
578     my (undef, %arg) = @_;
579    
580 root 1.31 defined (my $pid = $arg{pid} + 0)
581 root 1.20 or Carp::croak "required option 'pid' is missing";
582    
583     $PID_CB{$pid}{$arg{cb}} = $arg{cb};
584    
585     unless ($WNOHANG) {
586     $WNOHANG = eval { require POSIX; &POSIX::WNOHANG } || 1;
587     }
588    
589 root 1.23 unless ($CHLD_W) {
590 root 1.37 $CHLD_W = AnyEvent->signal (signal => 'CHLD', cb => \&_sigchld);
591     # child could be a zombie already, so make at least one round
592     &_sigchld;
593 root 1.23 }
594 root 1.20
595     bless [$pid, $arg{cb}], "AnyEvent::Base::Child"
596     }
597    
598     sub AnyEvent::Base::Child::DESTROY {
599     my ($pid, $cb) = @{$_[0]};
600    
601     delete $PID_CB{$pid}{$cb};
602     delete $PID_CB{$pid} unless keys %{ $PID_CB{$pid} };
603    
604     undef $CHLD_W unless keys %PID_CB;
605     }
606    
607 root 1.8 =head1 SUPPLYING YOUR OWN EVENT MODEL INTERFACE
608    
609 root 1.53 This is an advanced topic that you do not normally need to use AnyEvent in
610     a module. This section is only of use to event loop authors who want to
611     provide AnyEvent compatibility.
612    
613 root 1.8 If you need to support another event library which isn't directly
614     supported by AnyEvent, you can supply your own interface to it by
615 root 1.11 pushing, before the first watcher gets created, the package name of
616 root 1.8 the event module and the package name of the interface to use onto
617     C<@AnyEvent::REGISTRY>. You can do that before and even without loading
618 root 1.53 AnyEvent, so it is reasonably cheap.
619 root 1.8
620     Example:
621    
622     push @AnyEvent::REGISTRY, [urxvt => urxvt::anyevent::];
623    
624 root 1.12 This tells AnyEvent to (literally) use the C<urxvt::anyevent::>
625 root 1.53 package/class when it finds the C<urxvt> package/module is already loaded.
626    
627     When AnyEvent is loaded and asked to find a suitable event model, it
628     will first check for the presence of urxvt by trying to C<use> the
629     C<urxvt::anyevent> module.
630    
631     The class should provide implementations for all watcher types. See
632     L<AnyEvent::Impl::EV> (source code), L<AnyEvent::Impl::Glib> (Source code)
633     and so on for actual examples. Use C<perldoc -m AnyEvent::Impl::Glib> to
634     see the sources.
635    
636     If you don't provide C<signal> and C<child> watchers than AnyEvent will
637     provide suitable (hopefully) replacements.
638    
639     The above example isn't fictitious, the I<rxvt-unicode> (a.k.a. urxvt)
640     terminal emulator uses the above line as-is. An interface isn't included
641     in AnyEvent because it doesn't make sense outside the embedded interpreter
642     inside I<rxvt-unicode>, and it is updated and maintained as part of the
643 root 1.8 I<rxvt-unicode> distribution.
644    
645 root 1.12 I<rxvt-unicode> also cheats a bit by not providing blocking access to
646     condition variables: code blocking while waiting for a condition will
647     C<die>. This still works with most modules/usages, and blocking calls must
648 root 1.53 not be done in an interactive application, so it makes sense.
649 root 1.12
650 root 1.7 =head1 ENVIRONMENT VARIABLES
651    
652     The following environment variables are used by this module:
653    
654 root 1.55 =over 4
655    
656     =item C<PERL_ANYEVENT_VERBOSE>
657    
658     When set to C<2> or higher, cause AnyEvent to report to STDERR which event
659     model it chooses.
660    
661     =item C<PERL_ANYEVENT_MODEL>
662    
663     This can be used to specify the event model to be used by AnyEvent, before
664     autodetection and -probing kicks in. It must be a string consisting
665     entirely of ASCII letters. The string C<AnyEvent::Impl::> gets prepended
666     and the resulting module name is loaded and if the load was successful,
667     used as event model. If it fails to load AnyEvent will proceed with
668     autodetection and -probing.
669    
670     This functionality might change in future versions.
671    
672     For example, to force the pure perl model (L<AnyEvent::Impl::Perl>) you
673     could start your program like this:
674    
675     PERL_ANYEVENT_MODEL=Perl perl ...
676    
677     =back
678 root 1.7
679 root 1.53 =head1 EXAMPLE PROGRAM
680 root 1.2
681 root 1.53 The following program uses an IO watcher to read data from STDIN, a timer
682     to display a message once per second, and a condition variable to quit the
683     program when the user enters quit:
684 root 1.2
685     use AnyEvent;
686    
687     my $cv = AnyEvent->condvar;
688    
689 root 1.53 my $io_watcher = AnyEvent->io (
690     fh => \*STDIN,
691     poll => 'r',
692     cb => sub {
693     warn "io event <$_[0]>\n"; # will always output <r>
694     chomp (my $input = <STDIN>); # read a line
695     warn "read: $input\n"; # output what has been read
696     $cv->broadcast if $input =~ /^q/i; # quit program if /^q/i
697     },
698     );
699 root 1.2
700     my $time_watcher; # can only be used once
701    
702     sub new_timer {
703     $timer = AnyEvent->timer (after => 1, cb => sub {
704     warn "timeout\n"; # print 'timeout' about every second
705     &new_timer; # and restart the time
706     });
707     }
708    
709     new_timer; # create first timer
710    
711     $cv->wait; # wait until user enters /^q/i
712    
713 root 1.5 =head1 REAL-WORLD EXAMPLE
714    
715     Consider the L<Net::FCP> module. It features (among others) the following
716     API calls, which are to freenet what HTTP GET requests are to http:
717    
718     my $data = $fcp->client_get ($url); # blocks
719    
720     my $transaction = $fcp->txn_client_get ($url); # does not block
721     $transaction->cb ( sub { ... } ); # set optional result callback
722     my $data = $transaction->result; # possibly blocks
723    
724     The C<client_get> method works like C<LWP::Simple::get>: it requests the
725     given URL and waits till the data has arrived. It is defined to be:
726    
727     sub client_get { $_[0]->txn_client_get ($_[1])->result }
728    
729     And in fact is automatically generated. This is the blocking API of
730     L<Net::FCP>, and it works as simple as in any other, similar, module.
731    
732     More complicated is C<txn_client_get>: It only creates a transaction
733     (completion, result, ...) object and initiates the transaction.
734    
735     my $txn = bless { }, Net::FCP::Txn::;
736    
737     It also creates a condition variable that is used to signal the completion
738     of the request:
739    
740     $txn->{finished} = AnyAvent->condvar;
741    
742     It then creates a socket in non-blocking mode.
743    
744     socket $txn->{fh}, ...;
745     fcntl $txn->{fh}, F_SETFL, O_NONBLOCK;
746     connect $txn->{fh}, ...
747     and !$!{EWOULDBLOCK}
748     and !$!{EINPROGRESS}
749     and Carp::croak "unable to connect: $!\n";
750    
751 root 1.6 Then it creates a write-watcher which gets called whenever an error occurs
752 root 1.5 or the connection succeeds:
753    
754     $txn->{w} = AnyEvent->io (fh => $txn->{fh}, poll => 'w', cb => sub { $txn->fh_ready_w });
755    
756     And returns this transaction object. The C<fh_ready_w> callback gets
757     called as soon as the event loop detects that the socket is ready for
758     writing.
759    
760     The C<fh_ready_w> method makes the socket blocking again, writes the
761     request data and replaces the watcher by a read watcher (waiting for reply
762     data). The actual code is more complicated, but that doesn't matter for
763     this example:
764    
765     fcntl $txn->{fh}, F_SETFL, 0;
766     syswrite $txn->{fh}, $txn->{request}
767     or die "connection or write error";
768     $txn->{w} = AnyEvent->io (fh => $txn->{fh}, poll => 'r', cb => sub { $txn->fh_ready_r });
769    
770     Again, C<fh_ready_r> waits till all data has arrived, and then stores the
771     result and signals any possible waiters that the request ahs finished:
772    
773     sysread $txn->{fh}, $txn->{buf}, length $txn->{$buf};
774    
775     if (end-of-file or data complete) {
776     $txn->{result} = $txn->{buf};
777     $txn->{finished}->broadcast;
778 root 1.6 $txb->{cb}->($txn) of $txn->{cb}; # also call callback
779 root 1.5 }
780    
781     The C<result> method, finally, just waits for the finished signal (if the
782     request was already finished, it doesn't wait, of course, and returns the
783     data:
784    
785     $txn->{finished}->wait;
786 root 1.6 return $txn->{result};
787 root 1.5
788     The actual code goes further and collects all errors (C<die>s, exceptions)
789     that occured during request processing. The C<result> method detects
790 root 1.52 whether an exception as thrown (it is stored inside the $txn object)
791 root 1.5 and just throws the exception, which means connection errors and other
792     problems get reported tot he code that tries to use the result, not in a
793     random callback.
794    
795     All of this enables the following usage styles:
796    
797     1. Blocking:
798    
799     my $data = $fcp->client_get ($url);
800    
801 root 1.49 2. Blocking, but running in parallel:
802 root 1.5
803     my @datas = map $_->result,
804     map $fcp->txn_client_get ($_),
805     @urls;
806    
807     Both blocking examples work without the module user having to know
808     anything about events.
809    
810 root 1.49 3a. Event-based in a main program, using any supported event module:
811 root 1.5
812 root 1.49 use EV;
813 root 1.5
814     $fcp->txn_client_get ($url)->cb (sub {
815     my $txn = shift;
816     my $data = $txn->result;
817     ...
818     });
819    
820 root 1.49 EV::loop;
821 root 1.5
822     3b. The module user could use AnyEvent, too:
823    
824     use AnyEvent;
825    
826     my $quit = AnyEvent->condvar;
827    
828     $fcp->txn_client_get ($url)->cb (sub {
829     ...
830     $quit->broadcast;
831     });
832    
833     $quit->wait;
834    
835 root 1.55 =head1 FORK
836    
837     Most event libraries are not fork-safe. The ones who are usually are
838     because they are so inefficient. Only L<EV> is fully fork-aware.
839    
840     If you have to fork, you must either do so I<before> creating your first
841     watcher OR you must not use AnyEvent at all in the child.
842    
843     =head1 SECURITY CONSIDERATIONS
844    
845     AnyEvent can be forced to load any event model via
846     $ENV{PERL_ANYEVENT_MODEL}. While this cannot (to my knowledge) be used to
847     execute arbitrary code or directly gain access, it can easily be used to
848     make the program hang or malfunction in subtle ways, as AnyEvent watchers
849     will not be active when the program uses a different event model than
850     specified in the variable.
851    
852     You can make AnyEvent completely ignore this variable by deleting it
853     before the first watcher gets created, e.g. with a C<BEGIN> block:
854    
855     BEGIN { delete $ENV{PERL_ANYEVENT_MODEL} }
856    
857     use AnyEvent;
858    
859 root 1.2 =head1 SEE ALSO
860    
861 root 1.49 Event modules: L<Coro::EV>, L<EV>, L<EV::Glib>, L<Glib::EV>,
862 root 1.55 L<Coro::Event>, L<Event>, L<Glib::Event>, L<Glib>, L<Coro>, L<Tk>,
863     L<Event::Lib>.
864 root 1.5
865 root 1.49 Implementations: L<AnyEvent::Impl::CoroEV>, L<AnyEvent::Impl::EV>,
866 root 1.55 L<AnyEvent::Impl::CoroEvent>, L<AnyEvent::Impl::Event>, L<AnyEvent::Impl::Glib>,
867     L<AnyEvent::Impl::Tk>, L<AnyEvent::Impl::Perl>, L<AnyEvent::Impl::EventLib>.
868 root 1.5
869 root 1.49 Nontrivial usage examples: L<Net::FCP>, L<Net::XMPP2>.
870 root 1.2
871 root 1.54 =head1 AUTHOR
872    
873     Marc Lehmann <schmorp@schmorp.de>
874     http://home.schmorp.de/
875 root 1.2
876     =cut
877    
878     1
879 root 1.1