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