ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/AnyEvent/lib/AnyEvent/Intro.pod
Revision: 1.36
Committed: Thu Aug 8 06:16:17 2019 UTC (5 years, 3 months ago) by root
Branch: MAIN
CVS Tags: HEAD
Changes since 1.35: +0 -2 lines
Log Message:
*** empty log message ***

File Contents

# Content
1 =encoding utf-8
2
3 =head1 NAME
4
5 AnyEvent::Intro - an introductory tutorial to AnyEvent
6
7 =head1 Introduction to AnyEvent
8
9 This is a tutorial that will introduce you to the features of AnyEvent.
10
11 The first part introduces the core AnyEvent module (after swamping you a
12 bit in evangelism), which might already provide all you ever need: If you
13 are only interested in AnyEvent's event handling capabilities, read no
14 further.
15
16 The second part focuses on network programming using sockets, for which
17 AnyEvent offers a lot of support you can use, and a lot of workarounds
18 around portability quirks.
19
20
21 =head1 What is AnyEvent?
22
23 If you don't care for the whys and want to see code, skip this section!
24
25 AnyEvent is first of all just a framework to do event-based
26 programming. Typically such frameworks are an all-or-nothing thing: If you
27 use one such framework, you can't (easily, or even at all) use another in
28 the same program.
29
30 AnyEvent is different - it is a thin abstraction layer on top of other
31 event loops, just like DBI is an abstraction of many different database
32 APIs. Its main purpose is to move the choice of the underlying framework
33 (the event loop) from the module author to the program author using the
34 module.
35
36 That means you can write code that uses events to control what it
37 does, without forcing other code in the same program to use the same
38 underlying framework as you do - i.e. you can create a Perl module
39 that is event-based using AnyEvent, and users of that module can still
40 choose between using L<Gtk2>, L<Tk>, L<Event> (or run inside Irssi or
41 rxvt-unicode) or any other supported event loop. AnyEvent even comes with
42 its own pure-perl event loop implementation, so your code works regardless
43 of other modules that might or might not be installed. The latter is
44 important, as AnyEvent does not have any hard dependencies to other
45 modules, which makes it easy to install, for example, when you lack a C
46 compiler. No matter what environment, AnyEvent will just cope with it.
47
48 A typical limitation of existing Perl modules such as L<Net::IRC> is that
49 they come with their own event loop: In L<Net::IRC>, a program which uses
50 it needs to start the event loop of L<Net::IRC>. That means that one
51 cannot integrate this module into a L<Gtk2> GUI for instance, as that
52 module, too, enforces the use of its own event loop (namely L<Glib>).
53
54 Another example is L<LWP>: it provides no event interface at all. It's
55 a pure blocking HTTP (and FTP etc.) client library, which usually means
56 that you either have to start another process or have to fork for a HTTP
57 request, or use threads (e.g. L<Coro::LWP>), if you want to do something
58 else while waiting for the request to finish.
59
60 The motivation behind these designs is often that a module doesn't want
61 to depend on some complicated XS-module (Net::IRC), or that it doesn't
62 want to force the user to use some specific event loop at all (LWP), out
63 of fear of severly limiting the usefulness of the module: If your module
64 requires Glib, it will not run in a Tk program.
65
66 L<AnyEvent> solves this dilemma, by B<not> forcing module authors to
67 either:
68
69 =over 4
70
71 =item - write their own event loop (because it guarantees the availability
72 of an event loop everywhere - even on windows with no extra modules
73 installed).
74
75 =item - choose one specific event loop (because AnyEvent works with most
76 event loops available for Perl).
77
78 =back
79
80 If the module author uses L<AnyEvent> for all his (or her) event needs
81 (IO events, timers, signals, ...) then all other modules can just use
82 his module and don't have to choose an event loop or adapt to his event
83 loop. The choice of the event loop is ultimately made by the program
84 author who uses all the modules and writes the main program. And even
85 there he doesn't have to choose, he can just let L<AnyEvent> choose the
86 most efficient event loop available on the system.
87
88 Read more about this in the main documentation of the L<AnyEvent> module.
89
90
91 =head1 Introduction to Event-Based Programming
92
93 So what exactly is programming using events? It quite simply means that
94 instead of your code actively waiting for something, such as the user
95 entering something on STDIN:
96
97 $| = 1; print "enter your name> ";
98
99 my $name = <STDIN>;
100
101 You instead tell your event framework to notify you in the event of some
102 data being available on STDIN, by using a callback mechanism:
103
104 use AnyEvent;
105
106 $| = 1; print "enter your name> ";
107
108 my $name;
109
110 my $wait_for_input = AnyEvent->io (
111 fh => \*STDIN, # which file handle to check
112 poll => "r", # which event to wait for ("r"ead data)
113 cb => sub { # what callback to execute
114 $name = <STDIN>; # read it
115 }
116 );
117
118 # do something else here
119
120 Looks more complicated, and surely is, but the advantage of using events
121 is that your program can do something else instead of waiting for input
122 (side note: combining AnyEvent with a thread package such as Coro can
123 recoup much of the simplicity, effectively getting the best of two
124 worlds).
125
126 Waiting as done in the first example is also called "blocking" the process
127 because you "block"/keep your process from executing anything else while
128 you do so.
129
130 The second example avoids blocking by only registering interest in a read
131 event, which is fast and doesn't block your process. The callback will
132 be called only when data is available and can be read without blocking.
133
134 The "interest" is represented by an object returned by C<< AnyEvent->io
135 >> called a "watcher" object - thus named because it "watches" your
136 file handle (or other event sources) for the event you are interested in.
137
138 In the example above, we create an I/O watcher by calling the C<<
139 AnyEvent->io >> method. A lack of further interest in some event is
140 expressed by simply forgetting about its watcher, for example by
141 C<undef>-ing the only variable it is stored in. AnyEvent will
142 automatically clean up the watcher if it is no longer used, much like
143 Perl closes your file handles if you no longer use them anywhere.
144
145 =head3 A short note on callbacks
146
147 A common issue that hits people is the problem of passing parameters
148 to callbacks. Programmers used to languages such as C or C++ are often
149 used to a style where one passes the address of a function (a function
150 reference) and some data value, e.g.:
151
152 sub callback {
153 my ($arg) = @_;
154
155 $arg->method;
156 }
157
158 my $arg = ...;
159
160 call_me_back_later \&callback, $arg;
161
162 This is clumsy, as the place where behaviour is specified (when the
163 callback is registered) is often far away from the place where behaviour
164 is implemented. It also doesn't use Perl syntax to invoke the code. There
165 is also an abstraction penalty to pay as one has to I<name> the callback,
166 which often is unnecessary and leads to nonsensical or duplicated names.
167
168 In Perl, one can specify behaviour much more directly by using
169 I<closures>. Closures are code blocks that take a reference to the
170 enclosing scope(s) when they are created. This means lexical variables
171 in scope when a closure is created can be used inside the closure:
172
173 my $arg = ...;
174
175 call_me_back_later sub { $arg->method };
176
177 Under most circumstances, closures are faster, use fewer resources and
178 result in much clearer code than the traditional approach. Faster,
179 because parameter passing and storing them in local variables in Perl
180 is relatively slow. Fewer resources, because closures take references
181 to existing variables without having to create new ones, and clearer
182 code because it is immediately obvious that the second example calls the
183 C<method> method when the callback is invoked.
184
185 Apart from these, the strongest argument for using closures with AnyEvent
186 is that AnyEvent does not allow passing parameters to the callback, so
187 closures are the only way to achieve that in most cases :->
188
189
190 =head3 A little hint to catch mistakes
191
192 AnyEvent does not check the parameters you pass in, at least not by
193 default. to enable checking, simply start your program with C<AE_STRICT=1>
194 in the environment, or put C<use AnyEvent::Strict> near the top of your
195 program:
196
197 AE_STRICT=1 perl myprogram
198
199 You can find more info on this and additional debugging aids later in this
200 introduction.
201
202
203 =head2 Condition Variables
204
205 Back to the I/O watcher example: The code is not yet a fully working
206 program, and will not work as-is. The reason is that your callback will
207 not be invoked out of the blue; you have to run the event loop first.
208 Also, event-based programs need to block sometimes too, such as when
209 there is nothing to do, and everything is waiting for new events to
210 arrive.
211
212 In AnyEvent, this is done using condition variables. Condition variables
213 are named "condition variables" because they represent a condition that is
214 initially false and needs to be fulfilled.
215
216 You can also call them "merge points", "sync points", "rendezvous ports"
217 or even callbacks and many other things (and they are often called these
218 names in other frameworks). The important point is that you can create them
219 freely and later wait for them to become true.
220
221 Condition variables have two sides - one side is the "producer" of the
222 condition (whatever code detects and flags the condition), the other side
223 is the "consumer" (the code that waits for that condition).
224
225 In our example in the previous section, the producer is the event callback
226 and there is no consumer yet - let's change that right now:
227
228 use AnyEvent;
229
230 $| = 1; print "enter your name> ";
231
232 my $name;
233
234 my $name_ready = AnyEvent->condvar;
235
236 my $wait_for_input = AnyEvent->io (
237 fh => \*STDIN,
238 poll => "r",
239 cb => sub {
240 $name = <STDIN>;
241 $name_ready->send;
242 }
243 );
244
245 # do something else here
246
247 # now wait until the name is available:
248 $name_ready->recv;
249
250 undef $wait_for_input; # watcher no longer needed
251
252 print "your name is $name\n";
253
254 This program creates an AnyEvent condvar by calling the C<<
255 AnyEvent->condvar >> method. It then creates a watcher as usual, but
256 inside the callback it C<send>s the C<$name_ready> condition variable,
257 which causes whoever is waiting on it to continue.
258
259 The "whoever" in this case is the code that follows, which calls C<<
260 $name_ready->recv >>: The producer calls C<send>, the consumer calls
261 C<recv>.
262
263 If there is no C<$name> available yet, then the call to C<<
264 $name_ready->recv >> will halt your program until the condition becomes
265 true.
266
267 As the names C<send> and C<recv> imply, you can actually send and receive
268 data using this, for example, the above code could also be written like
269 this, without an extra variable to store the name in:
270
271 use AnyEvent;
272
273 $| = 1; print "enter your name> ";
274
275 my $name_ready = AnyEvent->condvar;
276
277 my $wait_for_input = AnyEvent->io (
278 fh => \*STDIN, poll => "r",
279 cb => sub { $name_ready->send (scalar <STDIN>) }
280 );
281
282 # do something else here
283
284 # now wait and fetch the name
285 my $name = $name_ready->recv;
286
287 undef $wait_for_input; # watcher no longer needed
288
289 print "your name is $name\n";
290
291 You can pass any number of arguments to C<send>, and every subsequent
292 call to C<recv> will return them.
293
294 =head2 The "main loop"
295
296 Most event-based frameworks have something called a "main loop" or "event
297 loop run function" or something similar.
298
299 Just like in C<recv> AnyEvent, these functions need to be called
300 eventually so that your event loop has a chance of actually looking for
301 the events you are interested in.
302
303 For example, in a L<Gtk2> program, the above example could also be written
304 like this:
305
306 use Gtk2 -init;
307 use AnyEvent;
308
309 ############################################
310 # create a window and some label
311
312 my $window = new Gtk2::Window "toplevel";
313 $window->add (my $label = new Gtk2::Label "soon replaced by name");
314
315 $window->show_all;
316
317 ############################################
318 # do our AnyEvent stuff
319
320 $| = 1; print "enter your name> ";
321
322 my $wait_for_input = AnyEvent->io (
323 fh => \*STDIN, poll => "r",
324 cb => sub {
325 # set the label
326 $label->set_text (scalar <STDIN>);
327 print "enter another name> ";
328 }
329 );
330
331 ############################################
332 # Now enter Gtk2's event loop
333
334 main Gtk2;
335
336 No condition variable anywhere in sight - instead, we just read a line
337 from STDIN and replace the text in the label. In fact, since nobody
338 C<undef>s C<$wait_for_input> you can enter multiple lines.
339
340 Instead of waiting for a condition variable, the program enters the Gtk2
341 main loop by calling C<< Gtk2->main >>, which will block the program and
342 wait for events to arrive.
343
344 This also shows that AnyEvent is quite flexible - you didn't have to do
345 anything to make the AnyEvent watcher use Gtk2 (actually Glib) - it just
346 worked.
347
348 Admittedly, the example is a bit silly - who would want to read names
349 from standard input in a Gtk+ application? But imagine that instead of
350 doing that, you make an HTTP request in the background and display its
351 results. In fact, with event-based programming you can make many
352 HTTP requests in parallel in your program and still provide feedback to
353 the user and stay interactive.
354
355 And in the next part you will see how to do just that - by implementing an
356 HTTP request, on our own, with the utility modules AnyEvent comes with.
357
358 Before that, however, let's briefly look at how you would write your
359 program using only AnyEvent, without ever calling some other event
360 loop's run function.
361
362 In the example using condition variables, we used those to start waiting
363 for events, and in fact, condition variables are the solution:
364
365 my $quit_program = AnyEvent->condvar;
366
367 # create AnyEvent watchers (or not) here
368
369 $quit_program->recv;
370
371 If any of your watcher callbacks decide to quit (this is often
372 called an "unloop" in other frameworks), they can just call C<<
373 $quit_program->send >>. Of course, they could also decide not to and
374 call C<exit> instead, or they could decide never to quit (e.g. in a
375 long-running daemon program).
376
377 If you don't need some clean quit functionality and just want to run the
378 event loop, you can do this:
379
380 AnyEvent->condvar->recv;
381
382 And this is, in fact, the closest to the idea of a main loop run
383 function that AnyEvent offers.
384
385 =head2 Timers and other event sources
386
387 So far, we have used only I/O watchers. These are useful mainly to find
388 out whether a socket has data to read, or space to write more data. On sane
389 operating systems this also works for console windows/terminals (typically
390 on standard input), serial lines, all sorts of other devices, basically
391 almost everything that has a file descriptor but isn't a file itself. (As
392 usual, "sane" excludes windows - on that platform you would need different
393 functions for all of these, complicating code immensely - think "socket
394 only" on windows).
395
396 However, I/O is not everything - the second most important event source is
397 the clock. For example when doing an HTTP request you might want to time
398 out when the server doesn't answer within some predefined amount of time.
399
400 In AnyEvent, timer event watchers are created by calling the C<<
401 AnyEvent->timer >> method:
402
403 use AnyEvent;
404
405 my $cv = AnyEvent->condvar;
406
407 my $wait_one_and_a_half_seconds = AnyEvent->timer (
408 after => 1.5, # after how many seconds to invoke the cb?
409 cb => sub { # the callback to invoke
410 $cv->send;
411 },
412 );
413
414 # can do something else here
415
416 # now wait till our time has come
417 $cv->recv;
418
419 Unlike I/O watchers, timers are only interested in the amount of seconds
420 they have to wait. When (at least) that amount of time has passed,
421 AnyEvent will invoke your callback.
422
423 Unlike I/O watchers, which will call your callback as many times as there
424 is data available, timers are normally one-shot: after they have "fired"
425 once and invoked your callback, they are dead and no longer do anything.
426
427 To get a repeating timer, such as a timer firing roughly once per second,
428 you can specify an C<interval> parameter:
429
430 my $once_per_second = AnyEvent->timer (
431 after => 0, # first invoke ASAP
432 interval => 1, # then invoke every second
433 cb => sub { # the callback to invoke
434 $cv->send;
435 },
436 );
437
438 =head3 More esoteric sources
439
440 AnyEvent also has some other, more esoteric event sources you can tap
441 into: signal, child and idle watchers.
442
443 Signal watchers can be used to wait for "signal events", which means
444 your process was sent a signal (such as C<SIGTERM> or C<SIGUSR1>).
445
446 Child-process watchers wait for a child process to exit. They are useful
447 when you fork a separate process and need to know when it exits, but you
448 do not want to wait for that by blocking.
449
450 Idle watchers invoke their callback when the event loop has handled all
451 outstanding events, polled for new events and didn't find any, i.e., when
452 your process is otherwise idle. They are useful if you want to do some
453 non-trivial data processing that can be done when your program doesn't
454 have anything better to do.
455
456 All these watcher types are described in detail in the main L<AnyEvent>
457 manual page.
458
459 Sometimes you also need to know what the current time is: C<<
460 AnyEvent->now >> returns the time the event toolkit uses to schedule
461 relative timers, and is usually what you want. It is often cached (which
462 means it can be a bit outdated). In that case, you can use the more costly
463 C<< AnyEvent->time >> method which will ask your operating system for the
464 current time, which is slower, but also more up to date.
465
466
467 =head1 Network programming and AnyEvent
468
469 So far you have seen how to register event watchers and handle events.
470
471 This is a great foundation to write network clients and servers, and might
472 be all that your module (or program) ever requires, but writing your own
473 I/O buffering again and again becomes tedious, not to mention that it
474 attracts errors.
475
476 While the core L<AnyEvent> module is still small and self-contained,
477 the distribution comes with some very useful utility modules such as
478 L<AnyEvent::Handle>, L<AnyEvent::DNS> and L<AnyEvent::Socket>. These can
479 make your life as a non-blocking network programmer a lot easier.
480
481 Here is a quick overview of these three modules:
482
483 =head2 L<AnyEvent::DNS>
484
485 This module allows fully asynchronous DNS resolution. It is used mainly by
486 L<AnyEvent::Socket> to resolve hostnames and service ports for you, but is
487 a great way to do other DNS resolution tasks, such as reverse lookups of
488 IP addresses for log files.
489
490 =head2 L<AnyEvent::Handle>
491
492 This module handles non-blocking IO on (socket-, pipe- etc.) file handles
493 in an event based manner. It provides a wrapper object around your file
494 handle that provides queueing and buffering of incoming and outgoing data
495 for you.
496
497 It also implements the most common data formats, such as text lines, or
498 fixed and variable-width data blocks.
499
500 =head2 L<AnyEvent::Socket>
501
502 This module provides you with functions that handle socket creation
503 and IP address magic. The two main functions are C<tcp_connect> and
504 C<tcp_server>. The former will connect a (streaming) socket to an internet
505 host for you and the later will make a server socket for you, to accept
506 connections.
507
508 This module also comes with transparent IPv6 support, this means: If you
509 write your programs with this module, you will be IPv6 ready without doing
510 anything special.
511
512 It also works around a lot of portability quirks (especially on the
513 windows platform), which makes it even easier to write your programs in a
514 portable way (did you know that windows uses different error codes for all
515 socket functions and that Perl does not know about these? That "Unknown
516 error 10022" (which is C<WSAEINVAL>) can mean that our C<connect> call was
517 successful? That unsuccessful TCP connects might never be reported back
518 to your program? That C<WSAEINPROGRESS> means your C<connect> call was
519 ignored instead of being in progress? AnyEvent::Socket works around all of
520 these Windows/Perl bugs for you).
521
522 =head2 Implementing a parallel finger client with non-blocking connects
523 and AnyEvent::Socket
524
525 The finger protocol is one of the simplest protocols in use on the
526 internet. Or in use in the past, as almost nobody uses it anymore.
527
528 It works by connecting to the finger port on another host, writing a
529 single line with a user name and then reading the finger response, as
530 specified by that user. OK, RFC 1288 specifies a vastly more complex
531 protocol, but it basically boils down to this:
532
533 # telnet freebsd.org finger
534 Trying 8.8.178.135...
535 Connected to freebsd.org (8.8.178.135).
536 Escape character is '^]'.
537 larry
538 Login: lile Name: Larry Lile
539 Directory: /home/lile Shell: /usr/local/bin/bash
540 No Mail.
541 Mail forwarded to: lile@stdio.com
542 No Plan.
543
544 So let's write a little AnyEvent function that makes a finger request:
545
546 use AnyEvent;
547 use AnyEvent::Socket;
548
549 sub finger($$) {
550 my ($user, $host) = @_;
551
552 # use a condvar to return results
553 my $cv = AnyEvent->condvar;
554
555 # first, connect to the host
556 tcp_connect $host, "finger", sub {
557 # the callback receives the socket handle - or nothing
558 my ($fh) = @_
559 or return $cv->send;
560
561 # now write the username
562 syswrite $fh, "$user\015\012";
563
564 my $response;
565
566 # register a read watcher
567 my $read_watcher; $read_watcher = AnyEvent->io (
568 fh => $fh,
569 poll => "r",
570 cb => sub {
571 my $len = sysread $fh, $response, 1024, length $response;
572
573 if ($len <= 0) {
574 # we are done, or an error occured, lets ignore the latter
575 undef $read_watcher; # no longer interested
576 $cv->send ($response); # send results
577 }
578 },
579 );
580 };
581
582 # pass $cv to the caller
583 $cv
584 }
585
586 That's a mouthful! Let's dissect this function a bit, first the overall
587 function and execution flow:
588
589 sub finger($$) {
590 my ($user, $host) = @_;
591
592 # use a condvar to return results
593 my $cv = AnyEvent->condvar;
594
595 # first, connect to the host
596 tcp_connect $host, "finger", sub {
597 ...
598 };
599
600 $cv
601 }
602
603 This isn't too complicated, just a function with two parameters that
604 creates a condition variable C<$cv>, initiates a TCP connect to
605 C<$host>, and returns C<$cv>. The caller can use the returned C<$cv> to
606 receive the finger response, but one could equally well pass a third
607 argument, a callback, to the function.
608
609 Since we are programming event'ish, we do not wait for the connect to
610 finish - it could block the program for a minute or longer!
611
612 Instead, we pass C<tcp_connect> a callback to invoke when the connect is
613 done. The callback is called with the socket handle as its first
614 argument if the connect succeeds, and no arguments otherwise. The
615 important point is that it will always be called as soon as the outcome
616 of the TCP connect is known.
617
618 This style of programming is also called "continuation style": the
619 "continuation" is simply the way the program continues - normally at the
620 next line after some statement (the exception is loops or things like
621 C<return>). When we are interested in events, however, we instead specify
622 the "continuation" of our program by passing a closure, which makes that
623 closure the "continuation" of the program.
624
625 The C<tcp_connect> call is like saying "return now, and when the
626 connection is established or the attempt failed, continue there".
627
628 Now let's look at the callback/closure in more detail:
629
630 # the callback receives the socket handle - or nothing
631 my ($fh) = @_
632 or return $cv->send;
633
634 The first thing the callback does is to save the socket handle in
635 C<$fh>. When there was an error (no arguments), then our instinct as
636 expert Perl programmers would tell us to C<die>:
637
638 my ($fh) = @_
639 or die "$host: $!";
640
641 While this would give good feedback to the user (if he happens to watch
642 standard error), our program would probably stop working here, as we never
643 report the results to anybody, certainly not the caller of our C<finger>
644 function, and most event loops continue even after a C<die>!
645
646 This is why we instead C<return>, but also call C<< $cv->send >> without
647 any arguments to signal to the condvar consumer that something bad has
648 happened. The return value of C<< $cv->send >> is irrelevant, as is
649 the return value of our callback. The C<return> statement is used for
650 the side effect of, well, returning immediately from the callback.
651 Checking for errors and handling them this way is very common, which is
652 why this compact idiom is so handy.
653
654 As the next step in the finger protocol, we send the username to the
655 finger daemon on the other side of our connection (the kernel.org finger
656 service doesn't actually wait for a username, but the net is running out
657 of finger servers fast):
658
659 syswrite $fh, "$user\015\012";
660
661 Note that this isn't 100% clean socket programming - the socket could,
662 for whatever reasons, not accept our data. When writing a small amount
663 of data like in this example it doesn't matter, as a socket buffer is
664 almost always big enough for a mere "username", but for real-world
665 cases you might need to implement some kind of write buffering - or use
666 L<AnyEvent::Handle>, which handles these matters for you, as shown in the
667 next section.
668
669 What we I<do> have to do is implement our own read buffer - the response
670 data could arrive late or in multiple chunks, and we cannot just wait for
671 it (event-based programming, you know?).
672
673 To do that, we register a read watcher on the socket which waits for data:
674
675 my $read_watcher; $read_watcher = AnyEvent->io (
676 fh => $fh,
677 poll => "r",
678
679 There is a trick here, however: the read watcher isn't stored in a global
680 variable, but in a local one - if the callback returns, it would normally
681 destroy the variable and its contents, which would in turn unregister our
682 watcher.
683
684 To avoid that, we refer to the watcher variable in the watcher callback.
685 This means that, when the C<tcp_connect> callback returns, perl thinks
686 (quite correctly) that the read watcher is still in use - namely inside
687 the inner callback - and thus keeps it alive even if nothing else in the
688 program refers to it anymore (it is much like Baron Münchhausen keeping
689 himself from dying by pulling himself out of a swamp).
690
691 The trick, however, is that instead of:
692
693 my $read_watcher = AnyEvent->io (...
694
695 The program does:
696
697 my $read_watcher; $read_watcher = AnyEvent->io (...
698
699 The reason for this is a quirk in the way Perl works: variable names
700 declared with C<my> are only visible in the I<next> statement. If the
701 whole C<< AnyEvent->io >> call, including the callback, would be done in
702 a single statement, the callback could not refer to the C<$read_watcher>
703 variable to C<undef>ine it, so it is done in two statements.
704
705 Whether you'd want to format it like this is of course a matter of style.
706 This way emphasizes that the declaration and assignment really are one
707 logical statement.
708
709 The callback itself calls C<sysread> for as many times as necessary, until
710 C<sysread> returns either an error or end-of-file:
711
712 cb => sub {
713 my $len = sysread $fh, $response, 1024, length $response;
714
715 if ($len <= 0) {
716
717 Note that C<sysread> has the ability to append data it reads to a scalar
718 if we specify an offset, a feature which we make use of in this example.
719
720 When C<sysread> indicates we are done, the callback C<undef>ines
721 the watcher and then C<send>s the response data to the condition
722 variable. All this has the following effects:
723
724 Undefining the watcher destroys it, as our callback was the only one still
725 having a reference to it. When the watcher gets destroyed, it destroys the
726 callback, which in turn means the C<$fh> handle is no longer used, so that
727 gets destroyed as well. The result is that all resources will be nicely
728 cleaned up by perl for us.
729
730 =head3 Using the finger client
731
732 Now, we could probably write the same finger client in a simpler way if
733 we used C<IO::Socket::INET>, ignored the problem of multiple hosts and
734 ignored IPv6 and a few other things that C<tcp_connect> handles for us.
735
736 But the main advantage is that we can not only run this finger function in
737 the background, we even can run multiple sessions in parallel, like this:
738
739 my $f1 = finger "kuriyama", "freebsd.org";
740 my $f2 = finger "icculus?listarchives=1", "icculus.org";
741 my $f3 = finger "mikachu", "icculus.org";
742
743 print "kuriyama's gpg key\n" , $f1->recv, "\n";
744 print "icculus' plan archive\n" , $f2->recv, "\n";
745 print "mikachu's plan zomgn\n" , $f3->recv, "\n";
746
747 It doesn't look like it, but in fact all three requests run in
748 parallel. The code waits for the first finger request to finish first, but
749 that doesn't keep it from executing them parallel: when the first C<recv>
750 call sees that the data isn't ready yet, it serves events for all three
751 requests automatically, until the first request has finished.
752
753 The second C<recv> call might either find the data is already there, or it
754 will continue handling events until that is the case, and so on.
755
756 By taking advantage of network latencies, which allows us to serve other
757 requests and events while we wait for an event on one socket, the overall
758 time to do these three requests will be greatly reduced, typically all
759 three are done in the same time as the slowest of the three requests.
760
761 By the way, you do not actually have to wait in the C<recv> method on an
762 AnyEvent condition variable - after all, waiting is evil - you can also
763 register a callback:
764
765 $f1->cb (sub {
766 my $response = shift->recv;
767 # ...
768 });
769
770 The callback will be invoked only when C<send> is called. In fact,
771 instead of returning a condition variable you could also pass a third
772 parameter to your finger function, the callback to invoke with the
773 response:
774
775 sub finger($$$) {
776 my ($user, $host, $cb) = @_;
777
778 How you implement it is a matter of taste - if you expect your function to
779 be used mainly in an event-based program you would normally prefer to pass
780 a callback directly. If you write a module and expect your users to use
781 it "synchronously" often (for example, a simple http-get script would not
782 really care much for events), then you would use a condition variable and
783 tell them "simply C<< ->recv >> the data".
784
785 =head3 Problems with the implementation and how to fix them
786
787 To make this example more real-world-ready, we would not only implement
788 some write buffering (for the paranoid, or maybe denial-of-service aware
789 security expert), but we would also have to handle timeouts and maybe
790 protocol errors.
791
792 Doing this quickly gets unwieldy, which is why we introduce
793 L<AnyEvent::Handle> in the next section, which takes care of all these
794 details for you and lets you concentrate on the actual protocol.
795
796
797 =head2 Implementing simple HTTP and HTTPS GET requests with AnyEvent::Handle
798
799 The L<AnyEvent::Handle> module has been hyped quite a bit in this document
800 so far, so let's see what it really offers.
801
802 As finger is such a simple protocol, let's try something slightly more
803 complicated: HTTP/1.0.
804
805 An HTTP GET request works by sending a single request line that indicates
806 what you want the server to do and the URI you want to act it on, followed
807 by as many "header" lines (C<Header: data>, same as e-mail headers) as
808 required for the request, followed by an empty line.
809
810 The response is formatted very similarly, first a line with the response
811 status, then again as many header lines as required, then an empty line,
812 followed by any data that the server might send.
813
814 Again, let's try it out with C<telnet> (I condensed the output a bit - if
815 you want to see the full response, do it yourself).
816
817 # telnet www.google.com 80
818 Trying 209.85.135.99...
819 Connected to www.google.com (209.85.135.99).
820 Escape character is '^]'.
821 GET /test HTTP/1.0
822
823 HTTP/1.0 404 Not Found
824 Date: Mon, 02 Jun 2008 07:05:54 GMT
825 Content-Type: text/html; charset=UTF-8
826
827 <html><head>
828 [...]
829 Connection closed by foreign host.
830
831 The C<GET ...> and the empty line were entered manually, the rest of the
832 telnet output is google's response, in this case a C<404 not found> one.
833
834 So, here is how you would do it with C<AnyEvent::Handle>:
835
836 sub http_get {
837 my ($host, $uri, $cb) = @_;
838
839 # store results here
840 my ($response, $header, $body);
841
842 my $handle; $handle = new AnyEvent::Handle
843 connect => [$host => 'http'],
844 on_error => sub {
845 $cb->("HTTP/1.0 500 $!");
846 $handle->destroy; # explicitly destroy handle
847 },
848 on_eof => sub {
849 $cb->($response, $header, $body);
850 $handle->destroy; # explicitly destroy handle
851 };
852
853 $handle->push_write ("GET $uri HTTP/1.0\015\012\015\012");
854
855 # now fetch response status line
856 $handle->push_read (line => sub {
857 my ($handle, $line) = @_;
858 $response = $line;
859 });
860
861 # then the headers
862 $handle->push_read (line => "\015\012\015\012", sub {
863 my ($handle, $line) = @_;
864 $header = $line;
865 });
866
867 # and finally handle any remaining data as body
868 $handle->on_read (sub {
869 $body .= $_[0]->rbuf;
870 $_[0]->rbuf = "";
871 });
872 }
873
874 And now let's go through it step by step. First, as usual, the overall
875 C<http_get> function structure:
876
877 sub http_get {
878 my ($host, $uri, $cb) = @_;
879
880 # store results here
881 my ($response, $header, $body);
882
883 my $handle; $handle = new AnyEvent::Handle
884 ... create handle object
885
886 ... push data to write
887
888 ... push what to expect to read queue
889 }
890
891 Unlike in the finger example, this time the caller has to pass a callback
892 to C<http_get>. Also, instead of passing a URL as one would expect, the
893 caller has to provide the hostname and URI - normally you would use the
894 C<URI> module to parse a URL and separate it into those parts, but that is
895 left to the inspired reader :)
896
897 Since everything else is left to the caller, all C<http_get> does is
898 initiate the connection by creating the AnyEvent::Handle object (which
899 calls C<tcp_connect> for us) and leave everything else to its callback.
900
901 The handle object is created, unsurprisingly, by calling the C<new>
902 method of L<AnyEvent::Handle>:
903
904 my $handle; $handle = new AnyEvent::Handle
905 connect => [$host => 'http'],
906 on_error => sub {
907 $cb->("HTTP/1.0 500 $!");
908 $handle->destroy; # explicitly destroy handle
909 },
910 on_eof => sub {
911 $cb->($response, $header, $body);
912 $handle->destroy; # explicitly destroy handle
913 };
914
915 The C<connect> argument tells AnyEvent::Handle to call C<tcp_connect> for
916 the specified host and service/port.
917
918 The C<on_error> callback will be called on any unexpected error, such as a
919 refused connection, or unexpected end-of-file while reading headers.
920
921 Instead of having an extra mechanism to signal errors, connection errors
922 are signalled by crafting a special "response status line", like this:
923
924 HTTP/1.0 500 Connection refused
925
926 This means the caller cannot distinguish (easily) between
927 locally-generated errors and server errors, but it simplifies error
928 handling for the caller a lot.
929
930 The error callback also destroys the handle explicitly, because we are not
931 interested in continuing after any errors. In AnyEvent::Handle callbacks
932 you have to call C<destroy> explicitly to destroy a handle. Outside of
933 those callbacks you can just forget the object reference and it will be
934 automatically cleaned up.
935
936 Last but not least, we set an C<on_eof> callback that is called when the
937 other side indicates it has stopped writing data, which we will use to
938 gracefully shut down the handle and report the results. This callback is
939 only called when the read queue is empty - if the read queue expects
940 some data and the handle gets an EOF from the other side this will be an
941 error - after all, you did expect more to come.
942
943 If you wanted to write a server using AnyEvent::Handle, you would use
944 C<tcp_accept> and then create the AnyEvent::Handle with the C<fh>
945 argument.
946
947 =head3 The write queue
948
949 The next line sends the actual request:
950
951 $handle->push_write ("GET $uri HTTP/1.0\015\012\015\012");
952
953 No headers will be sent (this is fine for simple requests), so the whole
954 request is just a single line followed by an empty line to signal the end
955 of the headers to the server.
956
957 The more interesting question is why the method is called C<push_write>
958 and not just write. The reason is that you can I<always> add some write
959 data without blocking, and to do this, AnyEvent::Handle needs some write
960 queue internally - and C<push_write> pushes some data onto the end of
961 that queue, just like Perl's C<push> pushes data onto the end of an
962 array.
963
964 The deeper reason is that at some point in the future, there might
965 be C<unshift_write> as well, and in any case, we will shortly meet
966 C<push_read> and C<unshift_read>, and it's usually easiest to remember if
967 all those functions have some symmetry in their name. So C<push> is used
968 as the opposite of C<unshift> in AnyEvent::Handle, not as the opposite of
969 C<pull> - just like in Perl.
970
971 Note that we call C<push_write> right after creating the AnyEvent::Handle
972 object, before it has had time to actually connect to the server. This is
973 fine, pushing the read and write requests will queue them in the handle
974 object until the connection has been established. Alternatively, we
975 could do this "on demand" in the C<on_connect> callback.
976
977 If C<push_write> is called with more than one argument, then you can do
978 I<formatted> I/O. For example, this would JSON-encode your data before
979 pushing it to the write queue:
980
981 $handle->push_write (json => [1, 2, 3]);
982
983 This pretty much summarises the write queue, there is little else to it.
984
985 Reading the response is far more interesting, because it involves the more
986 powerful and complex I<read queue>:
987
988 =head3 The read queue
989
990 The response consists of three parts: a single line with the response
991 status, a single paragraph of headers ended by an empty line, and the
992 request body, which is the remaining data on the connection.
993
994 For the first two, we push two read requests onto the read queue:
995
996 # now fetch response status line
997 $handle->push_read (line => sub {
998 my ($handle, $line) = @_;
999 $response = $line;
1000 });
1001
1002 # then the headers
1003 $handle->push_read (line => "\015\012\015\012", sub {
1004 my ($handle, $line) = @_;
1005 $header = $line;
1006 });
1007
1008 While one can just push a single callback to parse all the data on the
1009 queue, formatted I/O really comes to our aid here, since there is a
1010 ready-made "read line" read type. The first read expects a single line,
1011 ended by C<\015\012> (the standard end-of-line marker in internet
1012 protocols).
1013
1014 The second "line" is actually a single paragraph - instead of reading it
1015 line by line we tell C<push_read> that the end-of-line marker is really
1016 C<\015\012\015\012>, which is an empty line. The result is that the whole
1017 header paragraph will be treated as a single line and read. The word
1018 "line" is interpreted very freely, much like Perl itself does it.
1019
1020 Note that push read requests are pushed immediately after creating the
1021 handle object - since AnyEvent::Handle provides a queue we can push as
1022 many requests as we want, and AnyEvent::Handle will handle them in order.
1023
1024 There is, however, no read type for "the remaining data". For that, we
1025 install our own C<on_read> callback:
1026
1027 # and finally handle any remaining data as body
1028 $handle->on_read (sub {
1029 $body .= $_[0]->rbuf;
1030 $_[0]->rbuf = "";
1031 });
1032
1033 This callback is invoked every time data arrives and the read queue is
1034 empty - which in this example will only be the case when both response and
1035 header have been read. The C<on_read> callback could actually have been
1036 specified when constructing the object, but doing it this way preserves
1037 logical ordering.
1038
1039 The read callback adds the current read buffer to its C<$body>
1040 variable and, most importantly, I<empties> the buffer by assigning the
1041 empty string to it.
1042
1043 Given these instructions, AnyEvent::Handle will handle incoming data -
1044 if all goes well, the callback will be invoked with the response data;
1045 if not, it will get an error.
1046
1047 In general, you can implement pipelining (a semi-advanced feature of many
1048 protocols) very easily with AnyEvent::Handle: If you have a protocol
1049 with a request/response structure, your request methods/functions will
1050 all look like this (simplified):
1051
1052 sub request {
1053
1054 # send the request to the server
1055 $handle->push_write (...);
1056
1057 # push some response handlers
1058 $handle->push_read (...);
1059 }
1060
1061 This means you can queue as many requests as you want, and while
1062 AnyEvent::Handle goes through its read queue to handle the response data,
1063 the other side can work on the next request - queueing the request just
1064 appends some data to the write queue and installs a handler to be called
1065 later.
1066
1067 You might ask yourself how to handle decisions you can only make I<after>
1068 you have received some data (such as handling a short error response or a
1069 long and differently-formatted response). The answer to this problem is
1070 C<unshift_read>, which we will introduce together with an example in the
1071 coming sections.
1072
1073 =head3 Using C<http_get>
1074
1075 Finally, here is how you would use C<http_get>:
1076
1077 http_get "www.google.com", "/", sub {
1078 my ($response, $header, $body) = @_;
1079
1080 print
1081 $response, "\n",
1082 $body;
1083 };
1084
1085 And of course, you can run as many of these requests in parallel as you
1086 want (and your memory supports).
1087
1088 =head3 HTTPS
1089
1090 Now, as promised, let's implement the same thing for HTTPS, or more
1091 correctly, let's change our C<http_get> function into a function that
1092 speaks HTTPS instead.
1093
1094 HTTPS is a standard TLS connection (B<T>ransport B<L>ayer
1095 B<S>ecurity is the official name for what most people refer to as C<SSL>)
1096 that contains standard HTTP protocol exchanges. The only other difference
1097 to HTTP is that by default it uses port C<443> instead of port C<80>.
1098
1099 To implement these two differences we need two tiny changes, first, in the
1100 C<connect> parameter, we replace C<http> by C<https> to connect to the
1101 https port:
1102
1103 connect => [$host => 'https'],
1104
1105 The other change deals with TLS, which is something L<AnyEvent::Handle>
1106 does for us if the L<Net::SSLeay> module is available. To enable TLS
1107 with L<AnyEvent::Handle>, we pass an additional C<tls> parameter
1108 to the call to C<AnyEvent::Handle::new>:
1109
1110 tls => "connect",
1111
1112 Specifying C<tls> enables TLS, and the argument specifies whether
1113 AnyEvent::Handle is the server side ("accept") or the client side
1114 ("connect") for the TLS connection, as unlike TCP, there is a clear
1115 server/client relationship in TLS.
1116
1117 That's all.
1118
1119 Of course, all this should be handled transparently by C<http_get>
1120 after parsing the URL. If you need this, see the part about exercising
1121 your inspiration earlier in this document. You could also use the
1122 L<AnyEvent::HTTP> module from CPAN, which implements all this and works
1123 around a lot of quirks for you too.
1124
1125 =head3 The read queue - revisited
1126
1127 HTTP always uses the same structure in its responses, but many protocols
1128 require parsing responses differently depending on the response itself.
1129
1130 For example, in SMTP, you normally get a single response line:
1131
1132 220 mail.example.net Neverusesendmail 8.8.8 <mailme@example.net>
1133
1134 But SMTP also supports multi-line responses:
1135
1136 220-mail.example.net Neverusesendmail 8.8.8 <mailme@example.net>
1137 220-hey guys
1138 220 my response is longer than yours
1139
1140 To handle this, we need C<unshift_read>. As the name (we hope) implies,
1141 C<unshift_read> will not append your read request to the end of the read
1142 queue, but will prepend it to the queue instead.
1143
1144 This is useful in the situation above: Just push your response-line read
1145 request when sending the SMTP command, and when handling it, you look at
1146 the line to see if more is to come, and C<unshift_read> another reader
1147 callback if required, like this:
1148
1149 my $response; # response lines end up in here
1150
1151 my $read_response; $read_response = sub {
1152 my ($handle, $line) = @_;
1153
1154 $response .= "$line\n";
1155
1156 # check for continuation lines ("-" as 4th character")
1157 if ($line =~ /^...-/) {
1158 # if yes, then unshift another line read
1159 $handle->unshift_read (line => $read_response);
1160
1161 } else {
1162 # otherwise we are done
1163
1164 # free callback
1165 undef $read_response;
1166
1167 print "we are don reading: $response\n";
1168 }
1169 };
1170
1171 $handle->push_read (line => $read_response);
1172
1173 This recipe can be used for all similar parsing problems, for example in
1174 NNTP, the response code to some commands indicates that more data will be
1175 sent:
1176
1177 $handle->push_write ("article 42");
1178
1179 # read response line
1180 $handle->push_read (line => sub {
1181 my ($handle, $status) = @_;
1182
1183 # article data following?
1184 if ($status =~ /^2/) {
1185 # yes, read article body
1186
1187 $handle->unshift_read (line => "\012.\015\012", sub {
1188 my ($handle, $body) = @_;
1189
1190 $finish->($status, $body);
1191 });
1192
1193 } else {
1194 # some error occured, no article data
1195
1196 $finish->($status);
1197 }
1198 }
1199
1200 =head3 Your own read queue handler
1201
1202 Sometimes your protocol doesn't play nice, and uses lines or chunks of
1203 data not formatted in a way handled out of the box by AnyEvent::Handle.
1204 In this case you have to implement your own read parser.
1205
1206 To make up a contorted example, imagine you are looking for an even
1207 number of characters followed by a colon (":"). Also imagine that
1208 AnyEvent::Handle has no C<regex> read type which could be used, so you'd
1209 have to do it manually.
1210
1211 To implement a read handler for this, you would C<push_read> (or
1212 C<unshift_read>) a single code reference.
1213
1214 This code reference will then be called each time there is (new) data
1215 available in the read buffer, and is expected to either successfully
1216 eat/consume some of that data (and return true) or to return false to
1217 indicate that it wants to be called again.
1218
1219 If the code reference returns true, then it will be removed from the
1220 read queue (because it has parsed/consumed whatever it was supposed to
1221 consume), otherwise it stays in the front of it.
1222
1223 The example above could be coded like this:
1224
1225 $handle->push_read (sub {
1226 my ($handle) = @_;
1227
1228 # check for even number of characters + ":"
1229 # and remove the data if a match is found.
1230 # if not, return false (actually nothing)
1231
1232 $handle->{rbuf} =~ s/^( (?:..)* ) ://x
1233 or return;
1234
1235 # we got some data in $1, pass it to whoever wants it
1236 $finish->($1);
1237
1238 # and return true to indicate we are done
1239 1
1240 });
1241
1242
1243 =head1 Debugging aids
1244
1245 Now that you have seen how to use AnyEvent, here's what to use when you
1246 don't use it correctly, or simply hit a bug somewhere and want to debug
1247 it:
1248
1249 =over 4
1250
1251 =item Enable strict argument checking during development
1252
1253 AnyEvent does not, by default, do any argument checking. This can lead to
1254 strange and unexpected results especially if you are just trying to find
1255 your way with AnyEvent.
1256
1257 AnyEvent supports a special "strict" mode - off by default - which does
1258 very strict argument checking, at the expense of slowing down your
1259 program. During development, however, this mode is very useful because it
1260 quickly catches the msot common errors.
1261
1262 You can enable this strict mode either by having an environment variable
1263 C<AE_STRICT> with a true value in your environment:
1264
1265 AE_STRICT=1 perl myprog
1266
1267 Or you can write C<use AnyEvent::Strict> in your program, which has the
1268 same effect (do not do this in production, however).
1269
1270 =item Increase verbosity, configure logging
1271
1272 AnyEvent, by default, only logs critical messages. If something doesn't
1273 work, maybe there was a warning about it that you didn't see because it
1274 was suppressed.
1275
1276 So during development it is recommended to push up the logging level to at
1277 least warn level (C<5>):
1278
1279 AE_VERBOSE=5 perl myprog
1280
1281 Other levels that might be helpful are debug (C<8>) or even trace (C<9>).
1282
1283 AnyEvent's logging is quite versatile - the L<AnyEvent::Log> manpage has
1284 all the details.
1285
1286 =item Watcher wrapping, tracing, the shell
1287
1288 For even more debugging, you can enable watcher wrapping:
1289
1290 AE_DEBUG_WRAP=2 perl myprog
1291
1292 This will have the effect of wrapping every watcher into a special object
1293 that stores a backtrace of when it was created, stores a backtrace
1294 when an exception occurs during watcher execution, and stores a lot
1295 of other information. If that slows down your program too much, then
1296 C<AE_DEBUG_WRAP=1> avoids the costly backtraces.
1297
1298 Here is an example of what of information is stored:
1299
1300 59148536 DC::DB:472(Server::run)>io>DC::DB::Server::fh_read
1301 type: io watcher
1302 args: poll r fh GLOB(0x35283f0)
1303 created: 2011-09-01 23:13:46.597336 +0200 (1314911626.59734)
1304 file: ./blib/lib/Deliantra/Client/private/DC/DB.pm
1305 line: 472
1306 subname: DC::DB::Server::run
1307 context:
1308 tracing: enabled
1309 cb: CODE(0x2d1fb98) (DC::DB::Server::fh_read)
1310 invoked: 0 times
1311 created
1312 (eval 25) line 6 AnyEvent::Debug::Wrap::__ANON__('AnyEvent','fh',GLOB(0x35283f0),'poll','r','cb',CODE(0x2d1fb98)=DC::DB::Server::fh_read)
1313 DC::DB line 472 AE::io(GLOB(0x35283f0),'0',CODE(0x2d1fb98)=DC::DB::Server::fh_read)
1314 bin/deliantra line 2776 DC::DB::Server::run()
1315 bin/deliantra line 2941 main::main()
1316
1317 There are many ways to get at this data - see the L<AnyEvent::Debug> and
1318 L<AnyEvent::Log> manpages for more details.
1319
1320 The most interesting and interactive way is to create a debug shell, for
1321 example by setting C<AE_DEBUG_SHELL>:
1322
1323 AE_DEBUG_WRAP=2 AE_DEBUG_SHELL=$HOME/myshell ./myprog
1324
1325 # while myprog is running:
1326 socat readline $HOME/myshell
1327
1328 Note that anybody who can access F<$HOME/myshell> can make your program
1329 do anything he or she wants, so if you are not the only user on your
1330 machine, better put it into a secure location (F<$HOME> might not be
1331 secure enough).
1332
1333 If you don't have C<socat> (a shame!) and care even less about security,
1334 you can also use TCP and C<telnet>:
1335
1336 AE_DEBUG_WRAP=2 AE_DEBUG_SHELL=127.0.0.1:1234 ./myprog
1337
1338 telnet 127.0.0.1 1234
1339
1340 The debug shell can enable and disable tracing of watcher invocations,
1341 can display the trace output, give you a list of watchers and lets you
1342 investigate watchers in detail.
1343
1344 =back
1345
1346 This concludes our little tutorial.
1347
1348
1349 =head1 Where to go from here?
1350
1351 This introduction should have explained the key concepts of L<AnyEvent>
1352 - event watchers and condition variables, L<AnyEvent::Socket> - basic
1353 networking utilities, and L<AnyEvent::Handle> - a nice wrapper around
1354 sockets.
1355
1356 You could either start coding stuff right away, look at those manual
1357 pages for the gory details, or roam CPAN for other AnyEvent modules (such
1358 as L<AnyEvent::IRC> or L<AnyEvent::HTTP>) to see more code examples (or
1359 simply to use them).
1360
1361 If you need a protocol that doesn't have an implementation using AnyEvent,
1362 remember that you can mix AnyEvent with one other event framework, such as
1363 L<POE>, so you can always use AnyEvent for your own tasks plus modules of
1364 one other event framework to fill any gaps.
1365
1366 And last not least, you could also look at L<Coro>, especially
1367 L<Coro::AnyEvent>, to see how you can turn event-based programming from
1368 callback style back to the usual imperative style (also called "inversion
1369 of control" - AnyEvent calls I<you>, but Coro lets I<you> call AnyEvent).
1370
1371 =head1 Authors
1372
1373 Robin Redeker C<< <elmex at ta-sa.org> >>, Marc Lehmann <schmorp@schmorp.de>.
1374