ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/AnyEvent/README
(Generate patch)

Comparing AnyEvent/README (file contents):
Revision 1.24 by root, Thu May 29 03:46:04 2008 UTC vs.
Revision 1.28 by root, Sat Jul 12 20:45:27 2008 UTC

1=> NAME 1NAME
2 AnyEvent - provide framework for multiple event loops 2 AnyEvent - provide framework for multiple event loops
3 3
4 EV, Event, Glib, Tk, Perl, Event::Lib, Qt, POE - various supported event 4 EV, Event, Glib, Tk, Perl, Event::Lib, Qt, POE - various supported event
5 loops 5 loops
6 6
17 17
18 my $w = AnyEvent->condvar; # stores whether a condition was flagged 18 my $w = AnyEvent->condvar; # stores whether a condition was flagged
19 $w->send; # wake up current and all future recv's 19 $w->send; # wake up current and all future recv's
20 $w->recv; # enters "main loop" till $condvar gets ->send 20 $w->recv; # enters "main loop" till $condvar gets ->send
21 21
22INTRODUCTION/TUTORIAL
23 This manpage is mainly a reference manual. If you are interested in a
24 tutorial or some gentle introduction, have a look at the AnyEvent::Intro
25 manpage.
26
22WHY YOU SHOULD USE THIS MODULE (OR NOT) 27WHY YOU SHOULD USE THIS MODULE (OR NOT)
23 Glib, POE, IO::Async, Event... CPAN offers event models by the dozen 28 Glib, POE, IO::Async, Event... CPAN offers event models by the dozen
24 nowadays. So what is different about AnyEvent? 29 nowadays. So what is different about AnyEvent?
25 30
26 Executive Summary: AnyEvent is *compatible*, AnyEvent is *free of 31 Executive Summary: AnyEvent is *compatible*, AnyEvent is *free of
27 policy* and AnyEvent is *small and efficient*. 32 policy* and AnyEvent is *small and efficient*.
28 33
29 First and foremost, *AnyEvent is not an event model* itself, it only 34 First and foremost, *AnyEvent is not an event model* itself, it only
30 interfaces to whatever event model the main program happens to use in a 35 interfaces to whatever event model the main program happens to use, in a
31 pragmatic way. For event models and certain classes of immortals alike, 36 pragmatic way. For event models and certain classes of immortals alike,
32 the statement "there can only be one" is a bitter reality: In general, 37 the statement "there can only be one" is a bitter reality: In general,
33 only one event loop can be active at the same time in a process. 38 only one event loop can be active at the same time in a process.
34 AnyEvent helps hiding the differences between those event loops. 39 AnyEvent cannot change this, but it can hide the differences between
40 those event loops.
35 41
36 The goal of AnyEvent is to offer module authors the ability to do event 42 The goal of AnyEvent is to offer module authors the ability to do event
37 programming (waiting for I/O or timer events) without subscribing to a 43 programming (waiting for I/O or timer events) without subscribing to a
38 religion, a way of living, and most importantly: without forcing your 44 religion, a way of living, and most importantly: without forcing your
39 module users into the same thing by forcing them to use the same event 45 module users into the same thing by forcing them to use the same event
40 model you use. 46 model you use.
41 47
42 For modules like POE or IO::Async (which is a total misnomer as it is 48 For modules like POE or IO::Async (which is a total misnomer as it is
43 actually doing all I/O *synchronously*...), using them in your module is 49 actually doing all I/O *synchronously*...), using them in your module is
44 like joining a cult: After you joined, you are dependent on them and you 50 like joining a cult: After you joined, you are dependent on them and you
45 cannot use anything else, as it is simply incompatible to everything 51 cannot use anything else, as they are simply incompatible to everything
46 that isn't itself. What's worse, all the potential users of your module 52 that isn't them. What's worse, all the potential users of your module
47 are *also* forced to use the same event loop you use. 53 are *also* forced to use the same event loop you use.
48 54
49 AnyEvent is different: AnyEvent + POE works fine. AnyEvent + Glib works 55 AnyEvent is different: AnyEvent + POE works fine. AnyEvent + Glib works
50 fine. AnyEvent + Tk works fine etc. etc. but none of these work together 56 fine. AnyEvent + Tk works fine etc. etc. but none of these work together
51 with the rest: POE + IO::Async? No go. Tk + Event? No go. Again: if your 57 with the rest: POE + IO::Async? No go. Tk + Event? No go. Again: if your
52 module uses one of those, every user of your module has to use it, too. 58 module uses one of those, every user of your module has to use it, too.
53 But if your module uses AnyEvent, it works transparently with all event 59 But if your module uses AnyEvent, it works transparently with all event
54 models it supports (including stuff like POE and IO::Async, as long as 60 models it supports (including stuff like IO::Async, as long as those use
55 those use one of the supported event loops. It is trivial to add new 61 one of the supported event loops. It is trivial to add new event loops
56 event loops to AnyEvent, too, so it is future-proof). 62 to AnyEvent, too, so it is future-proof).
57 63
58 In addition to being free of having to use *the one and only true event 64 In addition to being free of having to use *the one and only true event
59 model*, AnyEvent also is free of bloat and policy: with POE or similar 65 model*, AnyEvent also is free of bloat and policy: with POE or similar
60 modules, you get an enormous amount of code and strict rules you have to 66 modules, you get an enormous amount of code and strict rules you have to
61 follow. AnyEvent, on the other hand, is lean and up to the point, by 67 follow. AnyEvent, on the other hand, is lean and up to the point, by
128 Many watchers either are used with "recursion" (repeating timers for 134 Many watchers either are used with "recursion" (repeating timers for
129 example), or need to refer to their watcher object in other ways. 135 example), or need to refer to their watcher object in other ways.
130 136
131 An any way to achieve that is this pattern: 137 An any way to achieve that is this pattern:
132 138
133 my $w; $w = AnyEvent->type (arg => value ..., cb => sub { 139 my $w; $w = AnyEvent->type (arg => value ..., cb => sub {
134 # you can use $w here, for example to undef it 140 # you can use $w here, for example to undef it
135 undef $w; 141 undef $w;
136 }); 142 });
137 143
138 Note that "my $w; $w =" combination. This is necessary because in Perl, 144 Note that "my $w; $w =" combination. This is necessary because in Perl,
139 my variables are only visible after the statement in which they are 145 my variables are only visible after the statement in which they are
140 declared. 146 declared.
141 147
142 I/O WATCHERS 148 I/O WATCHERS
143 You can create an I/O watcher by calling the "AnyEvent->io" method with 149 You can create an I/O watcher by calling the "AnyEvent->io" method with
144 the following mandatory key-value pairs as arguments: 150 the following mandatory key-value pairs as arguments:
145 151
146 "fh" the Perl *file handle* (*not* file descriptor) to watch for events. 152 "fh" the Perl *file handle* (*not* file descriptor) to watch for events
153 (AnyEvent might or might not keep a reference to this file handle).
147 "poll" must be a string that is either "r" or "w", which creates a 154 "poll" must be a string that is either "r" or "w", which creates a
148 watcher waiting for "r"eadable or "w"ritable events, respectively. "cb" 155 watcher waiting for "r"eadable or "w"ritable events, respectively. "cb"
149 is the callback to invoke each time the file handle becomes ready. 156 is the callback to invoke each time the file handle becomes ready.
150 157
151 Although the callback might get passed parameters, their value and 158 Although the callback might get passed parameters, their value and
158 165
159 Some event loops issue spurious readyness notifications, so you should 166 Some event loops issue spurious readyness notifications, so you should
160 always use non-blocking calls when reading/writing from/to your file 167 always use non-blocking calls when reading/writing from/to your file
161 handles. 168 handles.
162 169
163 Example:
164
165 # wait for readability of STDIN, then read a line and disable the watcher 170 Example: wait for readability of STDIN, then read a line and disable the
171 watcher.
172
166 my $w; $w = AnyEvent->io (fh => \*STDIN, poll => 'r', cb => sub { 173 my $w; $w = AnyEvent->io (fh => \*STDIN, poll => 'r', cb => sub {
167 chomp (my $input = <STDIN>); 174 chomp (my $input = <STDIN>);
168 warn "read: $input\n"; 175 warn "read: $input\n";
169 undef $w; 176 undef $w;
170 }); 177 });
179 186
180 Although the callback might get passed parameters, their value and 187 Although the callback might get passed parameters, their value and
181 presence is undefined and you cannot rely on them. Portable AnyEvent 188 presence is undefined and you cannot rely on them. Portable AnyEvent
182 callbacks cannot use arguments passed to time watcher callbacks. 189 callbacks cannot use arguments passed to time watcher callbacks.
183 190
184 The timer callback will be invoked at most once: if you want a repeating 191 The callback will normally be invoked once only. If you specify another
185 timer you have to create a new watcher (this is a limitation by both Tk 192 parameter, "interval", as a strictly positive number (> 0), then the
186 and Glib). 193 callback will be invoked regularly at that interval (in fractional
194 seconds) after the first invocation. If "interval" is specified with a
195 false value, then it is treated as if it were missing.
187 196
188 Example: 197 The callback will be rescheduled before invoking the callback, but no
198 attempt is done to avoid timer drift in most backends, so the interval
199 is only approximate.
189 200
190 # fire an event after 7.7 seconds 201 Example: fire an event after 7.7 seconds.
202
191 my $w = AnyEvent->timer (after => 7.7, cb => sub { 203 my $w = AnyEvent->timer (after => 7.7, cb => sub {
192 warn "timeout\n"; 204 warn "timeout\n";
193 }); 205 });
194 206
195 # to cancel the timer: 207 # to cancel the timer:
196 undef $w; 208 undef $w;
197 209
198 Example 2:
199
200 # fire an event after 0.5 seconds, then roughly every second 210 Example 2: fire an event after 0.5 seconds, then roughly every second.
201 my $w;
202 211
203 my $cb = sub {
204 # cancel the old timer while creating a new one
205 $w = AnyEvent->timer (after => 1, cb => $cb); 212 my $w = AnyEvent->timer (after => 0.5, interval => 1, cb => sub {
213 warn "timeout\n";
206 }; 214 };
207
208 # start the "loop" by creating the first watcher
209 $w = AnyEvent->timer (after => 0.5, cb => $cb);
210 215
211 TIMING ISSUES 216 TIMING ISSUES
212 There are two ways to handle timers: based on real time (relative, "fire 217 There are two ways to handle timers: based on real time (relative, "fire
213 in 10 seconds") and based on wallclock time (absolute, "fire at 12 218 in 10 seconds") and based on wallclock time (absolute, "fire at 12
214 o'clock"). 219 o'clock").
290 the difference between "AnyEvent->time" and "AnyEvent->now" into 295 the difference between "AnyEvent->time" and "AnyEvent->now" into
291 account. 296 account.
292 297
293 SIGNAL WATCHERS 298 SIGNAL WATCHERS
294 You can watch for signals using a signal watcher, "signal" is the signal 299 You can watch for signals using a signal watcher, "signal" is the signal
295 *name* without any "SIG" prefix, "cb" is the Perl callback to be invoked 300 *name* in uppercase and without any "SIG" prefix, "cb" is the Perl
296 whenever a signal occurs. 301 callback to be invoked whenever a signal occurs.
297 302
298 Although the callback might get passed parameters, their value and 303 Although the callback might get passed parameters, their value and
299 presence is undefined and you cannot rely on them. Portable AnyEvent 304 presence is undefined and you cannot rely on them. Portable AnyEvent
300 callbacks cannot use arguments passed to signal watcher callbacks. 305 callbacks cannot use arguments passed to signal watcher callbacks.
301 306
337 an AnyEvent program, you *have* to create at least one watcher before 342 an AnyEvent program, you *have* to create at least one watcher before
338 you "fork" the child (alternatively, you can call "AnyEvent::detect"). 343 you "fork" the child (alternatively, you can call "AnyEvent::detect").
339 344
340 Example: fork a process and wait for it 345 Example: fork a process and wait for it
341 346
342 my $done = AnyEvent->condvar; 347 my $done = AnyEvent->condvar;
343 348
344 my $pid = fork or exit 5; 349 my $pid = fork or exit 5;
345 350
346 my $w = AnyEvent->child ( 351 my $w = AnyEvent->child (
347 pid => $pid, 352 pid => $pid,
348 cb => sub { 353 cb => sub {
349 my ($pid, $status) = @_; 354 my ($pid, $status) = @_;
350 warn "pid $pid exited with status $status"; 355 warn "pid $pid exited with status $status";
351 $done->send; 356 $done->send;
352 }, 357 },
353 ); 358 );
354 359
355 # do something else, then wait for process exit 360 # do something else, then wait for process exit
356 $done->recv; 361 $done->recv;
357 362
358 CONDITION VARIABLES 363 CONDITION VARIABLES
359 If you are familiar with some event loops you will know that all of them 364 If you are familiar with some event loops you will know that all of them
360 require you to run some blocking "loop", "run" or similar function that 365 require you to run some blocking "loop", "run" or similar function that
361 will actively watch for new events and call your callbacks. 366 will actively watch for new events and call your callbacks.
567 $cb = $cv->cb ([new callback]) 572 $cb = $cv->cb ([new callback])
568 This is a mutator function that returns the callback set and 573 This is a mutator function that returns the callback set and
569 optionally replaces it before doing so. 574 optionally replaces it before doing so.
570 575
571 The callback will be called when the condition becomes "true", i.e. 576 The callback will be called when the condition becomes "true", i.e.
572 when "send" or "croak" are called. Calling "recv" inside the 577 when "send" or "croak" are called, with the only argument being the
578 condition variable itself. Calling "recv" inside the callback or at
573 callback or at any later time is guaranteed not to block. 579 any later time is guaranteed not to block.
574 580
575GLOBAL VARIABLES AND FUNCTIONS 581GLOBAL VARIABLES AND FUNCTIONS
576 $AnyEvent::MODEL 582 $AnyEvent::MODEL
577 Contains "undef" until the first watcher is being created. Then it 583 Contains "undef" until the first watcher is being created. Then it
578 contains the event model that is being used, which is the name of 584 contains the event model that is being used, which is the name of
692 AnyEvent::Util 698 AnyEvent::Util
693 Contains various utility functions that replace often-used but 699 Contains various utility functions that replace often-used but
694 blocking functions such as "inet_aton" by event-/callback-based 700 blocking functions such as "inet_aton" by event-/callback-based
695 versions. 701 versions.
696 702
697 AnyEvent::Handle
698 Provide read and write buffers and manages watchers for reads and
699 writes.
700
701 AnyEvent::Socket 703 AnyEvent::Socket
702 Provides various utility functions for (internet protocol) sockets, 704 Provides various utility functions for (internet protocol) sockets,
703 addresses and name resolution. Also functions to create non-blocking 705 addresses and name resolution. Also functions to create non-blocking
704 tcp connections or tcp servers, with IPv6 and SRV record support and 706 tcp connections or tcp servers, with IPv6 and SRV record support and
705 more. 707 more.
706 708
709 AnyEvent::Handle
710 Provide read and write buffers, manages watchers for reads and
711 writes, supports raw and formatted I/O, I/O queued and fully
712 transparent and non-blocking SSL/TLS.
713
707 AnyEvent::DNS 714 AnyEvent::DNS
708 Provides rich asynchronous DNS resolver capabilities. 715 Provides rich asynchronous DNS resolver capabilities.
709 716
717 AnyEvent::HTTP
718 A simple-to-use HTTP library that is capable of making a lot of
719 concurrent HTTP requests.
720
710 AnyEvent::HTTPD 721 AnyEvent::HTTPD
711 Provides a simple web application server framework. 722 Provides a simple web application server framework.
712 723
713 AnyEvent::FastPing 724 AnyEvent::FastPing
714 The fastest ping in the west. 725 The fastest ping in the west.
726
727 AnyEvent::DBI
728 Executes DBI requests asynchronously in a proxy process.
729
730 AnyEvent::AIO
731 Truly asynchronous I/O, should be in the toolbox of every event
732 programmer. AnyEvent::AIO transparently fuses IO::AIO and AnyEvent
733 together.
734
735 AnyEvent::BDB
736 Truly asynchronous Berkeley DB access. AnyEvent::BDB transparently
737 fuses BDB and AnyEvent together.
738
739 AnyEvent::GPSD
740 A non-blocking interface to gpsd, a daemon delivering GPS
741 information.
742
743 AnyEvent::IGS
744 A non-blocking interface to the Internet Go Server protocol (used by
745 App::IGS).
715 746
716 Net::IRC3 747 Net::IRC3
717 AnyEvent based IRC client module family. 748 AnyEvent based IRC client module family.
718 749
719 Net::XMPP2 750 Net::XMPP2
726 Event::ExecFlow 757 Event::ExecFlow
727 High level API for event-based execution flow control. 758 High level API for event-based execution flow control.
728 759
729 Coro 760 Coro
730 Has special support for AnyEvent via Coro::AnyEvent. 761 Has special support for AnyEvent via Coro::AnyEvent.
731
732 AnyEvent::AIO, IO::AIO
733 Truly asynchronous I/O, should be in the toolbox of every event
734 programmer. AnyEvent::AIO transparently fuses IO::AIO and AnyEvent
735 together.
736
737 AnyEvent::BDB, BDB
738 Truly asynchronous Berkeley DB access. AnyEvent::AIO transparently
739 fuses IO::AIO and AnyEvent together.
740 762
741 IO::Lambda 763 IO::Lambda
742 The lambda approach to I/O - don't ask, look there. Can use 764 The lambda approach to I/O - don't ask, look there. Can use
743 AnyEvent. 765 AnyEvent.
744 766
797 conditions, such as not being able to load the event model specified 819 conditions, such as not being able to load the event model specified
798 by "PERL_ANYEVENT_MODEL". 820 by "PERL_ANYEVENT_MODEL".
799 821
800 When set to 2 or higher, cause AnyEvent to report to STDERR which 822 When set to 2 or higher, cause AnyEvent to report to STDERR which
801 event model it chooses. 823 event model it chooses.
824
825 "PERL_ANYEVENT_STRICT"
826 AnyEvent does not do much argument checking by default, as thorough
827 argument checking is very costly. Setting this variable to a true
828 value will cause AnyEvent to load "AnyEvent::Strict" and then to
829 thoroughly check the arguments passed to most method calls. If it
830 finds any problems it will croak.
831
832 In other words, enables "strict" mode.
833
834 Unlike "use strict" it is definitely recommended ot keep it off in
835 production.
802 836
803 "PERL_ANYEVENT_MODEL" 837 "PERL_ANYEVENT_MODEL"
804 This can be used to specify the event model to be used by AnyEvent, 838 This can be used to specify the event model to be used by AnyEvent,
805 before auto detection and -probing kicks in. It must be a string 839 before auto detection and -probing kicks in. It must be a string
806 consisting entirely of ASCII letters. The string "AnyEvent::Impl::" 840 consisting entirely of ASCII letters. The string "AnyEvent::Impl::"
811 This functionality might change in future versions. 845 This functionality might change in future versions.
812 846
813 For example, to force the pure perl model (AnyEvent::Impl::Perl) you 847 For example, to force the pure perl model (AnyEvent::Impl::Perl) you
814 could start your program like this: 848 could start your program like this:
815 849
816 PERL_ANYEVENT_MODEL=Perl perl ... 850 PERL_ANYEVENT_MODEL=Perl perl ...
817 851
818 "PERL_ANYEVENT_PROTOCOLS" 852 "PERL_ANYEVENT_PROTOCOLS"
819 Used by both AnyEvent::DNS and AnyEvent::Socket to determine 853 Used by both AnyEvent::DNS and AnyEvent::Socket to determine
820 preferences for IPv4 or IPv6. The default is unspecified (and might 854 preferences for IPv4 or IPv6. The default is unspecified (and might
821 change, or be the result of auto probing). 855 change, or be the result of auto probing).
1262 model than specified in the variable. 1296 model than specified in the variable.
1263 1297
1264 You can make AnyEvent completely ignore this variable by deleting it 1298 You can make AnyEvent completely ignore this variable by deleting it
1265 before the first watcher gets created, e.g. with a "BEGIN" block: 1299 before the first watcher gets created, e.g. with a "BEGIN" block:
1266 1300
1267 BEGIN { delete $ENV{PERL_ANYEVENT_MODEL} } 1301 BEGIN { delete $ENV{PERL_ANYEVENT_MODEL} }
1268 1302
1269 use AnyEvent; 1303 use AnyEvent;
1270 1304
1271 Similar considerations apply to $ENV{PERL_ANYEVENT_VERBOSE}, as that can 1305 Similar considerations apply to $ENV{PERL_ANYEVENT_VERBOSE}, as that can
1272 be used to probe what backend is used and gain other information (which 1306 be used to probe what backend is used and gain other information (which
1273 is probably even less useful to an attacker than PERL_ANYEVENT_MODEL). 1307 is probably even less useful to an attacker than PERL_ANYEVENT_MODEL),
1308 and $ENV{PERL_ANYEGENT_STRICT}.
1309
1310BUGS
1311 Perl 5.8 has numerous memleaks that sometimes hit this module and are
1312 hard to work around. If you suffer from memleaks, first upgrade to Perl
1313 5.10 and check wether the leaks still show up. (Perl 5.10.0 has other
1314 annoying mamleaks, such as leaking on "map" and "grep" but it is usually
1315 not as pronounced).
1274 1316
1275SEE ALSO 1317SEE ALSO
1276 Utility functions: AnyEvent::Util. 1318 Utility functions: AnyEvent::Util.
1277 1319
1278 Event modules: EV, EV::Glib, Glib::EV, Event, Glib::Event, Glib, Tk, 1320 Event modules: EV, EV::Glib, Glib::EV, Event, Glib::Event, Glib, Tk,
1290 Coroutine support: Coro, Coro::AnyEvent, Coro::EV, Coro::Event, 1332 Coroutine support: Coro, Coro::AnyEvent, Coro::EV, Coro::Event,
1291 1333
1292 Nontrivial usage examples: Net::FCP, Net::XMPP2, AnyEvent::DNS. 1334 Nontrivial usage examples: Net::FCP, Net::XMPP2, AnyEvent::DNS.
1293 1335
1294AUTHOR 1336AUTHOR
1295 Marc Lehmann <schmorp@schmorp.de> 1337 Marc Lehmann <schmorp@schmorp.de>
1296 http://home.schmorp.de/ 1338 http://home.schmorp.de/
1297 1339

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines