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

Comparing AnyEvent/README (file contents):
Revision 1.27 by root, Sun Jun 22 12:17:47 2008 UTC vs.
Revision 1.28 by root, Sat Jul 12 20:45:27 2008 UTC

30 30
31 Executive Summary: AnyEvent is *compatible*, AnyEvent is *free of 31 Executive Summary: AnyEvent is *compatible*, AnyEvent is *free of
32 policy* and AnyEvent is *small and efficient*. 32 policy* and AnyEvent is *small and efficient*.
33 33
34 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
35 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
36 pragmatic way. For event models and certain classes of immortals alike, 36 pragmatic way. For event models and certain classes of immortals alike,
37 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,
38 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.
39 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.
40 41
41 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
42 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
43 religion, a way of living, and most importantly: without forcing your 44 religion, a way of living, and most importantly: without forcing your
44 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
45 model you use. 46 model you use.
46 47
47 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
48 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
49 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
50 cannot use anything else, as it is simply incompatible to everything 51 cannot use anything else, as they are simply incompatible to everything
51 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
52 are *also* forced to use the same event loop you use. 53 are *also* forced to use the same event loop you use.
53 54
54 AnyEvent is different: AnyEvent + POE works fine. AnyEvent + Glib works 55 AnyEvent is different: AnyEvent + POE works fine. AnyEvent + Glib works
55 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
56 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
57 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.
58 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
59 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
60 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
61 event loops to AnyEvent, too, so it is future-proof). 62 to AnyEvent, too, so it is future-proof).
62 63
63 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
64 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
65 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
66 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
146 147
147 I/O WATCHERS 148 I/O WATCHERS
148 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
149 the following mandatory key-value pairs as arguments: 150 the following mandatory key-value pairs as arguments:
150 151
151 "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).
152 "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
153 watcher waiting for "r"eadable or "w"ritable events, respectively. "cb" 155 watcher waiting for "r"eadable or "w"ritable events, respectively. "cb"
154 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.
155 157
156 Although the callback might get passed parameters, their value and 158 Although the callback might get passed parameters, their value and
163 165
164 Some event loops issue spurious readyness notifications, so you should 166 Some event loops issue spurious readyness notifications, so you should
165 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
166 handles. 168 handles.
167 169
168 Example:
169
170 # 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
171 my $w; $w = AnyEvent->io (fh => \*STDIN, poll => 'r', cb => sub { 173 my $w; $w = AnyEvent->io (fh => \*STDIN, poll => 'r', cb => sub {
172 chomp (my $input = <STDIN>); 174 chomp (my $input = <STDIN>);
173 warn "read: $input\n"; 175 warn "read: $input\n";
174 undef $w; 176 undef $w;
175 }); 177 });
184 186
185 Although the callback might get passed parameters, their value and 187 Although the callback might get passed parameters, their value and
186 presence is undefined and you cannot rely on them. Portable AnyEvent 188 presence is undefined and you cannot rely on them. Portable AnyEvent
187 callbacks cannot use arguments passed to time watcher callbacks. 189 callbacks cannot use arguments passed to time watcher callbacks.
188 190
189 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
190 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
191 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.
192 196
193 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.
194 200
195 # fire an event after 7.7 seconds 201 Example: fire an event after 7.7 seconds.
202
196 my $w = AnyEvent->timer (after => 7.7, cb => sub { 203 my $w = AnyEvent->timer (after => 7.7, cb => sub {
197 warn "timeout\n"; 204 warn "timeout\n";
198 }); 205 });
199 206
200 # to cancel the timer: 207 # to cancel the timer:
201 undef $w; 208 undef $w;
202 209
203 Example 2:
204
205 # 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.
206 my $w;
207 211
208 my $cb = sub {
209 # cancel the old timer while creating a new one
210 $w = AnyEvent->timer (after => 1, cb => $cb); 212 my $w = AnyEvent->timer (after => 0.5, interval => 1, cb => sub {
213 warn "timeout\n";
211 }; 214 };
212
213 # start the "loop" by creating the first watcher
214 $w = AnyEvent->timer (after => 0.5, cb => $cb);
215 215
216 TIMING ISSUES 216 TIMING ISSUES
217 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
218 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
219 o'clock"). 219 o'clock").
295 the difference between "AnyEvent->time" and "AnyEvent->now" into 295 the difference between "AnyEvent->time" and "AnyEvent->now" into
296 account. 296 account.
297 297
298 SIGNAL WATCHERS 298 SIGNAL WATCHERS
299 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
300 *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
301 whenever a signal occurs. 301 callback to be invoked whenever a signal occurs.
302 302
303 Although the callback might get passed parameters, their value and 303 Although the callback might get passed parameters, their value and
304 presence is undefined and you cannot rely on them. Portable AnyEvent 304 presence is undefined and you cannot rely on them. Portable AnyEvent
305 callbacks cannot use arguments passed to signal watcher callbacks. 305 callbacks cannot use arguments passed to signal watcher callbacks.
306 306
698 AnyEvent::Util 698 AnyEvent::Util
699 Contains various utility functions that replace often-used but 699 Contains various utility functions that replace often-used but
700 blocking functions such as "inet_aton" by event-/callback-based 700 blocking functions such as "inet_aton" by event-/callback-based
701 versions. 701 versions.
702 702
703 AnyEvent::Handle
704 Provide read and write buffers and manages watchers for reads and
705 writes.
706
707 AnyEvent::Socket 703 AnyEvent::Socket
708 Provides various utility functions for (internet protocol) sockets, 704 Provides various utility functions for (internet protocol) sockets,
709 addresses and name resolution. Also functions to create non-blocking 705 addresses and name resolution. Also functions to create non-blocking
710 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
711 more. 707 more.
712 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
713 AnyEvent::DNS 714 AnyEvent::DNS
714 Provides rich asynchronous DNS resolver capabilities. 715 Provides rich asynchronous DNS resolver capabilities.
715 716
716 AnyEvent::HTTP 717 AnyEvent::HTTP
717 A simple-to-use HTTP library that is capable of making a lot of 718 A simple-to-use HTTP library that is capable of making a lot of
724 The fastest ping in the west. 725 The fastest ping in the west.
725 726
726 AnyEvent::DBI 727 AnyEvent::DBI
727 Executes DBI requests asynchronously in a proxy process. 728 Executes DBI requests asynchronously in a proxy process.
728 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).
746
729 Net::IRC3 747 Net::IRC3
730 AnyEvent based IRC client module family. 748 AnyEvent based IRC client module family.
731 749
732 Net::XMPP2 750 Net::XMPP2
733 AnyEvent based XMPP (Jabber protocol) module family. 751 AnyEvent based XMPP (Jabber protocol) module family.
739 Event::ExecFlow 757 Event::ExecFlow
740 High level API for event-based execution flow control. 758 High level API for event-based execution flow control.
741 759
742 Coro 760 Coro
743 Has special support for AnyEvent via Coro::AnyEvent. 761 Has special support for AnyEvent via Coro::AnyEvent.
744
745 AnyEvent::AIO, IO::AIO
746 Truly asynchronous I/O, should be in the toolbox of every event
747 programmer. AnyEvent::AIO transparently fuses IO::AIO and AnyEvent
748 together.
749
750 AnyEvent::BDB, BDB
751 Truly asynchronous Berkeley DB access. AnyEvent::AIO transparently
752 fuses IO::AIO and AnyEvent together.
753 762
754 IO::Lambda 763 IO::Lambda
755 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
756 AnyEvent. 765 AnyEvent.
757 766
810 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
811 by "PERL_ANYEVENT_MODEL". 820 by "PERL_ANYEVENT_MODEL".
812 821
813 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
814 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.
815 836
816 "PERL_ANYEVENT_MODEL" 837 "PERL_ANYEVENT_MODEL"
817 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,
818 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
819 consisting entirely of ASCII letters. The string "AnyEvent::Impl::" 840 consisting entirely of ASCII letters. The string "AnyEvent::Impl::"
1281 1302
1282 use AnyEvent; 1303 use AnyEvent;
1283 1304
1284 Similar considerations apply to $ENV{PERL_ANYEVENT_VERBOSE}, as that can 1305 Similar considerations apply to $ENV{PERL_ANYEVENT_VERBOSE}, as that can
1285 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
1286 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}.
1287 1309
1288BUGS 1310BUGS
1289 Perl 5.8 has numerous memleaks that sometimes hit this module and are 1311 Perl 5.8 has numerous memleaks that sometimes hit this module and are
1290 hard to work around. If you suffer from memleaks, first upgrade to Perl 1312 hard to work around. If you suffer from memleaks, first upgrade to Perl
1291 5.10 and check wether the leaks still show up. (Perl 5.10.0 has other 1313 5.10 and check wether the leaks still show up. (Perl 5.10.0 has other

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines