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

Comparing AnyEvent/README (file contents):
Revision 1.13 by root, Fri Nov 23 10:42:00 2007 UTC vs.
Revision 1.18 by root, Thu Apr 24 09:13:26 2008 UTC

1NAME 1NAME
2 AnyEvent - provide framework for multiple event loops 2 AnyEvent - provide framework for multiple event loops
3 3
4 Event, Coro, Glib, Tk, Perl - various supported event loops 4 EV, Event, Coro::EV, Coro::Event, Glib, Tk, Perl, Event::Lib, Qt -
5 various supported event loops
5 6
6SYNOPSIS 7SYNOPSIS
7 use AnyEvent; 8 use AnyEvent;
8 9
9 my $w = AnyEvent->io (fh => $fh, poll => "r|w", cb => sub { 10 my $w = AnyEvent->io (fh => $fh, poll => "r|w", cb => sub {
12 13
13 my $w = AnyEvent->timer (after => $seconds, cb => sub { 14 my $w = AnyEvent->timer (after => $seconds, cb => sub {
14 ... 15 ...
15 }); 16 });
16 17
17 my $w = AnyEvent->condvar; # stores wether a condition was flagged 18 my $w = AnyEvent->condvar; # stores whether a condition was flagged
18 $w->wait; # enters "main loop" till $condvar gets ->broadcast 19 $w->wait; # enters "main loop" till $condvar gets ->broadcast
19 $w->broadcast; # wake up current and all future wait's 20 $w->broadcast; # wake up current and all future wait's
21
22WHY YOU SHOULD USE THIS MODULE (OR NOT)
23 Glib, POE, IO::Async, Event... CPAN offers event models by the dozen
24 nowadays. So what is different about AnyEvent?
25
26 Executive Summary: AnyEvent is *compatible*, AnyEvent is *free of
27 policy* and AnyEvent is *small and efficient*.
28
29 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
31 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,
33 only one event loop can be active at the same time in a process.
34 AnyEvent helps hiding the differences between those event loops.
35
36 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
38 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
40 model you use.
41
42 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
44 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
46 that isn't itself. What's worse, all the potential users of your module
47 are *also* forced to use the same event loop you use.
48
49 AnyEvent is different: AnyEvent + POE works fine. AnyEvent + Glib works
50 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
52 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
54 models it supports (including stuff like POE and IO::Async, as long as
55 those use one of the supported event loops. It is trivial to add new
56 event loops to AnyEvent, too, so it is future-proof).
57
58 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
60 modules, you get an enourmous amount of code and strict rules you have
61 to follow. AnyEvent, on the other hand, is lean and up to the point, by
62 only offering the functionality that is necessary, in as thin as a
63 wrapper as technically possible.
64
65 Of course, if you want lots of policy (this can arguably be somewhat
66 useful) and you want to force your users to use the one and only event
67 model, you should *not* use this module.
20 68
21DESCRIPTION 69DESCRIPTION
22 AnyEvent provides an identical interface to multiple event loops. This 70 AnyEvent provides an identical interface to multiple event loops. This
23 allows module authors to utilise an event loop without forcing module 71 allows module authors to utilise an event loop without forcing module
24 users to use the same event loop (as only a single event loop can 72 users to use the same event loop (as only a single event loop can
25 coexist peacefully at any one time). 73 coexist peacefully at any one time).
26 74
27 The interface itself is vaguely similar but not identical to the Event 75 The interface itself is vaguely similar, but not identical to the Event
28 module. 76 module.
29 77
30 On the first call of any method, the module tries to detect the 78 During the first call of any watcher-creation method, the module tries
31 currently loaded event loop by probing wether any of the following 79 to detect the currently loaded event loop by probing whether one of the
32 modules is loaded: Coro::Event, Event, Glib, Tk. The first one found is 80 following modules is already loaded: Coro::EV, Coro::Event, EV, Event,
33 used. If none is found, the module tries to load these modules in the 81 Glib, Tk, Event::Lib, Qt. The first one found is used. If none are
82 found, the module tries to load these modules (excluding Event::Lib and
34 order given. The first one that could be successfully loaded will be 83 Qt) in the order given. The first one that can be successfully loaded
35 used. If still none could be found, AnyEvent will fall back to a 84 will be used. If, after this, still none could be found, AnyEvent will
36 pure-perl event loop, which is also not very efficient. 85 fall back to a pure-perl event loop, which is not very efficient, but
86 should work everywhere.
37 87
38 Because AnyEvent first checks for modules that are already loaded, 88 Because AnyEvent first checks for modules that are already loaded,
39 loading an Event model explicitly before first using AnyEvent will 89 loading an event model explicitly before first using AnyEvent will
40 likely make that model the default. For example: 90 likely make that model the default. For example:
41 91
42 use Tk; 92 use Tk;
43 use AnyEvent; 93 use AnyEvent;
44 94
45 # .. AnyEvent will likely default to Tk 95 # .. AnyEvent will likely default to Tk
96
97 The *likely* means that, if any module loads another event model and
98 starts using it, all bets are off. Maybe you should tell their authors
99 to use AnyEvent so their modules work together with others seamlessly...
46 100
47 The pure-perl implementation of AnyEvent is called 101 The pure-perl implementation of AnyEvent is called
48 "AnyEvent::Impl::Perl". Like other event modules you can load it 102 "AnyEvent::Impl::Perl". Like other event modules you can load it
49 explicitly. 103 explicitly.
50 104
53 stores relevant data for each kind of event you are waiting for, such as 107 stores relevant data for each kind of event you are waiting for, such as
54 the callback to call, the filehandle to watch, etc. 108 the callback to call, the filehandle to watch, etc.
55 109
56 These watchers are normal Perl objects with normal Perl lifetime. After 110 These watchers are normal Perl objects with normal Perl lifetime. After
57 creating a watcher it will immediately "watch" for events and invoke the 111 creating a watcher it will immediately "watch" for events and invoke the
112 callback when the event occurs (of course, only when the event model is
113 in control).
114
58 callback. To disable the watcher you have to destroy it (e.g. by setting 115 To disable the watcher you have to destroy it (e.g. by setting the
59 the variable that stores it to "undef" or otherwise deleting all 116 variable you store it in to "undef" or otherwise deleting all references
60 references to it). 117 to it).
61 118
62 All watchers are created by calling a method on the "AnyEvent" class. 119 All watchers are created by calling a method on the "AnyEvent" class.
63 120
121 Many watchers either are used with "recursion" (repeating timers for
122 example), or need to refer to their watcher object in other ways.
123
124 An any way to achieve that is this pattern:
125
126 my $w; $w = AnyEvent->type (arg => value ..., cb => sub {
127 # you can use $w here, for example to undef it
128 undef $w;
129 });
130
131 Note that "my $w; $w =" combination. This is necessary because in Perl,
132 my variables are only visible after the statement in which they are
133 declared.
134
64 IO WATCHERS 135 IO WATCHERS
65 You can create I/O watcher by calling the "AnyEvent->io" method with the 136 You can create an I/O watcher by calling the "AnyEvent->io" method with
66 following mandatory arguments: 137 the following mandatory key-value pairs as arguments:
67 138
68 "fh" the Perl *filehandle* (not filedescriptor) to watch for events. 139 "fh" the Perl *file handle* (*not* file descriptor) to watch for events.
69 "poll" must be a string that is either "r" or "w", that creates a 140 "poll" must be a string that is either "r" or "w", which creates a
70 watcher waiting for "r"eadable or "w"ritable events. "cb" the callback 141 watcher waiting for "r"eadable or "w"ritable events, respectively. "cb"
71 to invoke everytime the filehandle becomes ready. 142 is the callback to invoke each time the file handle becomes ready.
72 143
73 Only one io watcher per "fh" and "poll" combination is allowed (i.e. on 144 As long as the I/O watcher exists it will keep the file descriptor or a
74 a socket you can have one r + one w, not any more (limitation comes from 145 copy of it alive/open.
75 Tk - if you are sure you are not using Tk this limitation is gone).
76 146
77 Filehandles will be kept alive, so as long as the watcher exists, the 147 It is not allowed to close a file handle as long as any watcher is
78 filehandle exists, too. 148 active on the underlying file descriptor.
149
150 Some event loops issue spurious readyness notifications, so you should
151 always use non-blocking calls when reading/writing from/to your file
152 handles.
79 153
80 Example: 154 Example:
81 155
82 # wait for readability of STDIN, then read a line and disable the watcher 156 # wait for readability of STDIN, then read a line and disable the watcher
83 my $w; $w = AnyEvent->io (fh => \*STDIN, poll => 'r', cb => sub { 157 my $w; $w = AnyEvent->io (fh => \*STDIN, poll => 'r', cb => sub {
88 162
89 TIME WATCHERS 163 TIME WATCHERS
90 You can create a time watcher by calling the "AnyEvent->timer" method 164 You can create a time watcher by calling the "AnyEvent->timer" method
91 with the following mandatory arguments: 165 with the following mandatory arguments:
92 166
93 "after" after how many seconds (fractions are supported) should the 167 "after" specifies after how many seconds (fractional values are
94 timer activate. "cb" the callback to invoke. 168 supported) should the timer activate. "cb" the callback to invoke in
169 that case.
95 170
96 The timer callback will be invoked at most once: if you want a repeating 171 The timer callback will be invoked at most once: if you want a repeating
97 timer you have to create a new watcher (this is a limitation by both Tk 172 timer you have to create a new watcher (this is a limitation by both Tk
98 and Glib). 173 and Glib).
99 174
105 }); 180 });
106 181
107 # to cancel the timer: 182 # to cancel the timer:
108 undef $w; 183 undef $w;
109 184
110 CONDITION WATCHERS 185 Example 2:
186
187 # fire an event after 0.5 seconds, then roughly every second
188 my $w;
189
190 my $cb = sub {
191 # cancel the old timer while creating a new one
192 $w = AnyEvent->timer (after => 1, cb => $cb);
193 };
194
195 # start the "loop" by creating the first watcher
196 $w = AnyEvent->timer (after => 0.5, cb => $cb);
197
198 TIMING ISSUES
199 There are two ways to handle timers: based on real time (relative, "fire
200 in 10 seconds") and based on wallclock time (absolute, "fire at 12
201 o'clock").
202
203 While most event loops expect timers to specified in a relative way,
204 they use absolute time internally. This makes a difference when your
205 clock "jumps", for example, when ntp decides to set your clock backwards
206 from the wrong date of 2014-01-01 to 2008-01-01, a watcher that is
207 supposed to fire "after" a second might actually take six years to
208 finally fire.
209
210 AnyEvent cannot compensate for this. The only event loop that is
211 conscious about these issues is EV, which offers both relative
212 (ev_timer, based on true relative time) and absolute (ev_periodic, based
213 on wallclock time) timers.
214
215 AnyEvent always prefers relative timers, if available, matching the
216 AnyEvent API.
217
218 SIGNAL WATCHERS
219 You can watch for signals using a signal watcher, "signal" is the signal
220 *name* without any "SIG" prefix, "cb" is the Perl callback to be invoked
221 whenever a signal occurs.
222
223 Multiple signal occurances can be clumped together into one callback
224 invocation, and callback invocation will be synchronous. synchronous
225 means that it might take a while until the signal gets handled by the
226 process, but it is guarenteed not to interrupt any other callbacks.
227
228 The main advantage of using these watchers is that you can share a
229 signal between multiple watchers.
230
231 This watcher might use %SIG, so programs overwriting those signals
232 directly will likely not work correctly.
233
234 Example: exit on SIGINT
235
236 my $w = AnyEvent->signal (signal => "INT", cb => sub { exit 1 });
237
238 CHILD PROCESS WATCHERS
239 You can also watch on a child process exit and catch its exit status.
240
241 The child process is specified by the "pid" argument (if set to 0, it
242 watches for any child process exit). The watcher will trigger as often
243 as status change for the child are received. This works by installing a
244 signal handler for "SIGCHLD". The callback will be called with the pid
245 and exit status (as returned by waitpid).
246
247 Example: wait for pid 1333
248
249 my $w = AnyEvent->child (
250 pid => 1333,
251 cb => sub {
252 my ($pid, $status) = @_;
253 warn "pid $pid exited with status $status";
254 },
255 );
256
257 CONDITION VARIABLES
111 Condition watchers can be created by calling the "AnyEvent->condvar" 258 Condition variables can be created by calling the "AnyEvent->condvar"
112 method without any arguments. 259 method without any arguments.
113 260
114 A condition watcher watches for a condition - precisely that the 261 A condition variable waits for a condition - precisely that the
115 "->broadcast" method has been called. 262 "->broadcast" method has been called.
116 263
117 The watcher has only two methods: 264 They are very useful to signal that a condition has been fulfilled, for
265 example, if you write a module that does asynchronous http requests,
266 then a condition variable would be the ideal candidate to signal the
267 availability of results.
268
269 You can also use condition variables to block your main program until an
270 event occurs - for example, you could "->wait" in your main program
271 until the user clicks the Quit button in your app, which would
272 "->broadcast" the "quit" event.
273
274 Note that condition variables recurse into the event loop - if you have
275 two pirces of code that call "->wait" in a round-robbin fashion, you
276 lose. Therefore, condition variables are good to export to your caller,
277 but you should avoid making a blocking wait yourself, at least in
278 callbacks, as this asks for trouble.
279
280 This object has two methods:
118 281
119 $cv->wait 282 $cv->wait
120 Wait (blocking if necessary) until the "->broadcast" method has been 283 Wait (blocking if necessary) until the "->broadcast" method has been
121 called on c<$cv>, while servicing other watchers normally. 284 called on c<$cv>, while servicing other watchers normally.
122 285
123 Not all event models support a blocking wait - some die in that
124 case, so if you are using this from a module, never require a
125 blocking wait, but let the caller decide wether the call will block
126 or not (for example, by coupling condition variables with some kind
127 of request results and supporting callbacks so the caller knows that
128 getting the result will not block, while still suppporting blockign
129 waits if the caller so desires).
130
131 You can only wait once on a condition - additional calls will return 286 You can only wait once on a condition - additional calls will return
132 immediately. 287 immediately.
133 288
289 Not all event models support a blocking wait - some die in that case
290 (programs might want to do that to stay interactive), so *if you are
291 using this from a module, never require a blocking wait*, but let
292 the caller decide whether the call will block or not (for example,
293 by coupling condition variables with some kind of request results
294 and supporting callbacks so the caller knows that getting the result
295 will not block, while still suppporting blocking waits if the caller
296 so desires).
297
298 Another reason *never* to "->wait" in a module is that you cannot
299 sensibly have two "->wait"'s in parallel, as that would require
300 multiple interpreters or coroutines/threads, none of which
301 "AnyEvent" can supply (the coroutine-aware backends
302 AnyEvent::Impl::CoroEV and AnyEvent::Impl::CoroEvent explicitly
303 support concurrent "->wait"'s from different coroutines, however).
304
134 $cv->broadcast 305 $cv->broadcast
135 Flag the condition as ready - a running "->wait" and all further 306 Flag the condition as ready - a running "->wait" and all further
136 calls to "wait" will return after this method has been called. If 307 calls to "wait" will (eventually) return after this method has been
137 nobody is waiting the broadcast will be remembered.. 308 called. If nobody is waiting the broadcast will be remembered..
138 309
139 Example: 310 Example:
140 311
141 # wait till the result is ready 312 # wait till the result is ready
142 my $result_ready = AnyEvent->condvar; 313 my $result_ready = AnyEvent->condvar;
143 314
144 # do something such as adding a timer 315 # do something such as adding a timer
145 # or socket watcher the calls $result_ready->broadcast 316 # or socket watcher the calls $result_ready->broadcast
146 # when the "result" is ready. 317 # when the "result" is ready.
318 # in this case, we simply use a timer:
319 my $w = AnyEvent->timer (
320 after => 1,
321 cb => sub { $result_ready->broadcast },
322 );
147 323
324 # this "blocks" (while handling events) till the watcher
325 # calls broadcast
148 $result_ready->wait; 326 $result_ready->wait;
149 327
150 SIGNAL WATCHERS 328GLOBAL VARIABLES AND FUNCTIONS
151 You can listen for signals using a signal watcher, "signal" is the
152 signal *name* without any "SIG" prefix. Multiple signals events can be
153 clumped together into one callback invocation, and callback invocation
154 might or might not be asynchronous.
155
156 These watchers might use %SIG, so programs overwriting those signals
157 directly will likely not work correctly.
158
159 Example: exit on SIGINT
160
161 my $w = AnyEvent->signal (signal => "INT", cb => sub { exit 1 });
162
163 CHILD PROCESS WATCHERS
164 You can also listen for the status of a child process specified by the
165 "pid" argument (or any child if the pid argument is 0). The watcher will
166 trigger as often as status change for the child are received. This works
167 by installing a signal handler for "SIGCHLD". The callback will be
168 called with the pid and exit status (as returned by waitpid).
169
170 Example: wait for pid 1333
171
172 my $w = AnyEvent->child (pid => 1333, cb => sub { warn "exit status $?" });
173
174GLOBALS
175 $AnyEvent::MODEL 329 $AnyEvent::MODEL
176 Contains "undef" until the first watcher is being created. Then it 330 Contains "undef" until the first watcher is being created. Then it
177 contains the event model that is being used, which is the name of 331 contains the event model that is being used, which is the name of
178 the Perl class implementing the model. This class is usually one of 332 the Perl class implementing the model. This class is usually one of
179 the "AnyEvent::Impl:xxx" modules, but can be any other class in the 333 the "AnyEvent::Impl:xxx" modules, but can be any other class in the
180 case AnyEvent has been extended at runtime (e.g. in *rxvt-unicode*). 334 case AnyEvent has been extended at runtime (e.g. in *rxvt-unicode*).
181 335
182 The known classes so far are: 336 The known classes so far are:
183 337
184 AnyEvent::Impl::CoroEV based on Coro::EV, best choice. 338 AnyEvent::Impl::CoroEV based on Coro::EV, best choice.
339 AnyEvent::Impl::CoroEvent based on Coro::Event, second best choice.
185 AnyEvent::Impl::EV based on EV (an interface to libev, also best choice). 340 AnyEvent::Impl::EV based on EV (an interface to libev, best choice).
186 AnyEvent::Impl::Coro based on Coro::Event, second best choice.
187 AnyEvent::Impl::Event based on Event, also second best choice :) 341 AnyEvent::Impl::Event based on Event, second best choice.
188 AnyEvent::Impl::Glib based on Glib, second-best choice. 342 AnyEvent::Impl::Glib based on Glib, third-best choice.
189 AnyEvent::Impl::Tk based on Tk, very bad choice. 343 AnyEvent::Impl::Tk based on Tk, very bad choice.
190 AnyEvent::Impl::Perl pure-perl implementation, inefficient. 344 AnyEvent::Impl::Perl pure-perl implementation, inefficient but portable.
345 AnyEvent::Impl::Qt based on Qt, cannot be autoprobed (see its docs).
346 AnyEvent::Impl::EventLib based on Event::Lib, leaks memory and worse.
191 347
192 AnyEvent::detect 348 AnyEvent::detect
193 Returns $AnyEvent::MODEL, forcing autodetection of the event model 349 Returns $AnyEvent::MODEL, forcing autodetection of the event model
194 if necessary. You should only call this function right before you 350 if necessary. You should only call this function right before you
195 would have created an AnyEvent watcher anyway, that is, very late at 351 would have created an AnyEvent watcher anyway, that is, as late as
196 runtime. 352 possible at runtime.
197 353
198WHAT TO DO IN A MODULE 354WHAT TO DO IN A MODULE
199 As a module author, you should "use AnyEvent" and call AnyEvent methods 355 As a module author, you should "use AnyEvent" and call AnyEvent methods
200 freely, but you should not load a specific event module or rely on it. 356 freely, but you should not load a specific event module or rely on it.
201 357
202 Be careful when you create watchers in the module body - Anyevent will 358 Be careful when you create watchers in the module body - AnyEvent will
203 decide which event module to use as soon as the first method is called, 359 decide which event module to use as soon as the first method is called,
204 so by calling AnyEvent in your module body you force the user of your 360 so by calling AnyEvent in your module body you force the user of your
205 module to load the event module first. 361 module to load the event module first.
206 362
363 Never call "->wait" on a condition variable unless you *know* that the
364 "->broadcast" method has been called on it already. This is because it
365 will stall the whole program, and the whole point of using events is to
366 stay interactive.
367
368 It is fine, however, to call "->wait" when the user of your module
369 requests it (i.e. if you create a http request object ad have a method
370 called "results" that returns the results, it should call "->wait"
371 freely, as the user of your module knows what she is doing. always).
372
207WHAT TO DO IN THE MAIN PROGRAM 373WHAT TO DO IN THE MAIN PROGRAM
208 There will always be a single main program - the only place that should 374 There will always be a single main program - the only place that should
209 dictate which event model to use. 375 dictate which event model to use.
210 376
211 If it doesn't care, it can just "use AnyEvent" and use it itself, or not 377 If it doesn't care, it can just "use AnyEvent" and use it itself, or not
212 do anything special and let AnyEvent decide which implementation to 378 do anything special (it does not need to be event-based) and let
213 chose. 379 AnyEvent decide which implementation to chose if some module relies on
380 it.
214 381
215 If the main program relies on a specific event model (for example, in 382 If the main program relies on a specific event model. For example, in
216 Gtk2 programs you have to rely on either Glib or Glib::Event), you 383 Gtk2 programs you have to rely on the Glib module. You should load the
217 should load it before loading AnyEvent or any module that uses it, 384 event module before loading AnyEvent or any module that uses it:
218 generally, as early as possible. The reason is that modules might create 385 generally speaking, you should load it as early as possible. The reason
219 watchers when they are loaded, and AnyEvent will decide on the event 386 is that modules might create watchers when they are loaded, and AnyEvent
220 model to use as soon as it creates watchers, and it might chose the 387 will decide on the event model to use as soon as it creates watchers,
221 wrong one unless you load the correct one yourself. 388 and it might chose the wrong one unless you load the correct one
389 yourself.
222 390
223 You can chose to use a rather inefficient pure-perl implementation by 391 You can chose to use a rather inefficient pure-perl implementation by
224 loading the "AnyEvent::Impl::Perl" module, but letting AnyEvent chose is 392 loading the "AnyEvent::Impl::Perl" module, which gives you similar
225 generally better. 393 behaviour everywhere, but letting AnyEvent chose is generally better.
226 394
227SUPPLYING YOUR OWN EVENT MODEL INTERFACE 395SUPPLYING YOUR OWN EVENT MODEL INTERFACE
396 This is an advanced topic that you do not normally need to use AnyEvent
397 in a module. This section is only of use to event loop authors who want
398 to provide AnyEvent compatibility.
399
228 If you need to support another event library which isn't directly 400 If you need to support another event library which isn't directly
229 supported by AnyEvent, you can supply your own interface to it by 401 supported by AnyEvent, you can supply your own interface to it by
230 pushing, before the first watcher gets created, the package name of the 402 pushing, before the first watcher gets created, the package name of the
231 event module and the package name of the interface to use onto 403 event module and the package name of the interface to use onto
232 @AnyEvent::REGISTRY. You can do that before and even without loading 404 @AnyEvent::REGISTRY. You can do that before and even without loading
233 AnyEvent. 405 AnyEvent, so it is reasonably cheap.
234 406
235 Example: 407 Example:
236 408
237 push @AnyEvent::REGISTRY, [urxvt => urxvt::anyevent::]; 409 push @AnyEvent::REGISTRY, [urxvt => urxvt::anyevent::];
238 410
239 This tells AnyEvent to (literally) use the "urxvt::anyevent::" 411 This tells AnyEvent to (literally) use the "urxvt::anyevent::"
240 package/class when it finds the "urxvt" package/module is loaded. When 412 package/class when it finds the "urxvt" package/module is already
413 loaded.
414
241 AnyEvent is loaded and asked to find a suitable event model, it will 415 When AnyEvent is loaded and asked to find a suitable event model, it
242 first check for the presence of urxvt. 416 will first check for the presence of urxvt by trying to "use" the
417 "urxvt::anyevent" module.
243 418
244 The class should provide implementations for all watcher types (see 419 The class should provide implementations for all watcher types. See
245 AnyEvent::Impl::Event (source code), AnyEvent::Impl::Glib (Source code) 420 AnyEvent::Impl::EV (source code), AnyEvent::Impl::Glib (Source code) and
246 and so on for actual examples, use "perldoc -m AnyEvent::Impl::Glib" to 421 so on for actual examples. Use "perldoc -m AnyEvent::Impl::Glib" to see
247 see the sources). 422 the sources.
248 423
424 If you don't provide "signal" and "child" watchers than AnyEvent will
425 provide suitable (hopefully) replacements.
426
249 The above isn't fictitious, the *rxvt-unicode* (a.k.a. urxvt) uses the 427 The above example isn't fictitious, the *rxvt-unicode* (a.k.a. urxvt)
250 above line as-is. An interface isn't included in AnyEvent because it 428 terminal emulator uses the above line as-is. An interface isn't included
251 doesn't make sense outside the embedded interpreter inside 429 in AnyEvent because it doesn't make sense outside the embedded
252 *rxvt-unicode*, and it is updated and maintained as part of the 430 interpreter inside *rxvt-unicode*, and it is updated and maintained as
253 *rxvt-unicode* distribution. 431 part of the *rxvt-unicode* distribution.
254 432
255 *rxvt-unicode* also cheats a bit by not providing blocking access to 433 *rxvt-unicode* also cheats a bit by not providing blocking access to
256 condition variables: code blocking while waiting for a condition will 434 condition variables: code blocking while waiting for a condition will
257 "die". This still works with most modules/usages, and blocking calls 435 "die". This still works with most modules/usages, and blocking calls
258 must not be in an interactive application, so it makes sense. 436 must not be done in an interactive application, so it makes sense.
259 437
260ENVIRONMENT VARIABLES 438ENVIRONMENT VARIABLES
261 The following environment variables are used by this module: 439 The following environment variables are used by this module:
262 440
263 "PERL_ANYEVENT_VERBOSE" when set to 2 or higher, reports which event 441 "PERL_ANYEVENT_VERBOSE"
264 model gets used. 442 When set to 2 or higher, cause AnyEvent to report to STDERR which
443 event model it chooses.
265 444
266EXAMPLE 445 "PERL_ANYEVENT_MODEL"
446 This can be used to specify the event model to be used by AnyEvent,
447 before autodetection and -probing kicks in. It must be a string
448 consisting entirely of ASCII letters. The string "AnyEvent::Impl::"
449 gets prepended and the resulting module name is loaded and if the
450 load was successful, used as event model. If it fails to load
451 AnyEvent will proceed with autodetection and -probing.
452
453 This functionality might change in future versions.
454
455 For example, to force the pure perl model (AnyEvent::Impl::Perl) you
456 could start your program like this:
457
458 PERL_ANYEVENT_MODEL=Perl perl ...
459
460EXAMPLE PROGRAM
267 The following program uses an io watcher to read data from stdin, a 461 The following program uses an IO watcher to read data from STDIN, a
268 timer to display a message once per second, and a condvar to exit the 462 timer to display a message once per second, and a condition variable to
269 program when the user enters quit: 463 quit the program when the user enters quit:
270 464
271 use AnyEvent; 465 use AnyEvent;
272 466
273 my $cv = AnyEvent->condvar; 467 my $cv = AnyEvent->condvar;
274 468
275 my $io_watcher = AnyEvent->io (fh => \*STDIN, poll => 'r', cb => sub { 469 my $io_watcher = AnyEvent->io (
470 fh => \*STDIN,
471 poll => 'r',
472 cb => sub {
276 warn "io event <$_[0]>\n"; # will always output <r> 473 warn "io event <$_[0]>\n"; # will always output <r>
277 chomp (my $input = <STDIN>); # read a line 474 chomp (my $input = <STDIN>); # read a line
278 warn "read: $input\n"; # output what has been read 475 warn "read: $input\n"; # output what has been read
279 $cv->broadcast if $input =~ /^q/i; # quit program if /^q/i 476 $cv->broadcast if $input =~ /^q/i; # quit program if /^q/i
477 },
280 }); 478 );
281 479
282 my $time_watcher; # can only be used once 480 my $time_watcher; # can only be used once
283 481
284 sub new_timer { 482 sub new_timer {
285 $timer = AnyEvent->timer (after => 1, cb => sub { 483 $timer = AnyEvent->timer (after => 1, cb => sub {
366 $txn->{finished}->wait; 564 $txn->{finished}->wait;
367 return $txn->{result}; 565 return $txn->{result};
368 566
369 The actual code goes further and collects all errors ("die"s, 567 The actual code goes further and collects all errors ("die"s,
370 exceptions) that occured during request processing. The "result" method 568 exceptions) that occured during request processing. The "result" method
371 detects wether an exception as thrown (it is stored inside the $txn 569 detects whether an exception as thrown (it is stored inside the $txn
372 object) and just throws the exception, which means connection errors and 570 object) and just throws the exception, which means connection errors and
373 other problems get reported tot he code that tries to use the result, 571 other problems get reported tot he code that tries to use the result,
374 not in a random callback. 572 not in a random callback.
375 573
376 All of this enables the following usage styles: 574 All of this enables the following usage styles:
377 575
378 1. Blocking: 576 1. Blocking:
379 577
380 my $data = $fcp->client_get ($url); 578 my $data = $fcp->client_get ($url);
381 579
382 2. Blocking, but parallelizing: 580 2. Blocking, but running in parallel:
383 581
384 my @datas = map $_->result, 582 my @datas = map $_->result,
385 map $fcp->txn_client_get ($_), 583 map $fcp->txn_client_get ($_),
386 @urls; 584 @urls;
387 585
388 Both blocking examples work without the module user having to know 586 Both blocking examples work without the module user having to know
389 anything about events. 587 anything about events.
390 588
391 3a. Event-based in a main program, using any support Event module: 589 3a. Event-based in a main program, using any supported event module:
392 590
393 use Event; 591 use EV;
394 592
395 $fcp->txn_client_get ($url)->cb (sub { 593 $fcp->txn_client_get ($url)->cb (sub {
396 my $txn = shift; 594 my $txn = shift;
397 my $data = $txn->result; 595 my $data = $txn->result;
398 ... 596 ...
399 }); 597 });
400 598
401 Event::loop; 599 EV::loop;
402 600
403 3b. The module user could use AnyEvent, too: 601 3b. The module user could use AnyEvent, too:
404 602
405 use AnyEvent; 603 use AnyEvent;
406 604
411 $quit->broadcast; 609 $quit->broadcast;
412 }); 610 });
413 611
414 $quit->wait; 612 $quit->wait;
415 613
614FORK
615 Most event libraries are not fork-safe. The ones who are usually are
616 because they are so inefficient. Only EV is fully fork-aware.
617
618 If you have to fork, you must either do so *before* creating your first
619 watcher OR you must not use AnyEvent at all in the child.
620
621SECURITY CONSIDERATIONS
622 AnyEvent can be forced to load any event model via
623 $ENV{PERL_ANYEVENT_MODEL}. While this cannot (to my knowledge) be used
624 to execute arbitrary code or directly gain access, it can easily be used
625 to make the program hang or malfunction in subtle ways, as AnyEvent
626 watchers will not be active when the program uses a different event
627 model than specified in the variable.
628
629 You can make AnyEvent completely ignore this variable by deleting it
630 before the first watcher gets created, e.g. with a "BEGIN" block:
631
632 BEGIN { delete $ENV{PERL_ANYEVENT_MODEL} }
633
634 use AnyEvent;
635
416SEE ALSO 636SEE ALSO
417 Event modules: Coro::Event, Coro, Event, Glib::Event, Glib. 637 Event modules: Coro::EV, EV, EV::Glib, Glib::EV, Coro::Event, Event,
638 Glib::Event, Glib, Coro, Tk, Event::Lib, Qt.
418 639
419 Implementations: AnyEvent::Impl::Coro, AnyEvent::Impl::Event, 640 Implementations: AnyEvent::Impl::CoroEV, AnyEvent::Impl::EV,
420 AnyEvent::Impl::Glib, AnyEvent::Impl::Tk. 641 AnyEvent::Impl::CoroEvent, AnyEvent::Impl::Event, AnyEvent::Impl::Glib,
642 AnyEvent::Impl::Tk, AnyEvent::Impl::Perl, AnyEvent::Impl::EventLib,
643 AnyEvent::Impl::Qt.
421 644
422 Nontrivial usage example: Net::FCP. 645 Nontrivial usage examples: Net::FCP, Net::XMPP2.
423 646
647AUTHOR
648 Marc Lehmann <schmorp@schmorp.de>
649 http://home.schmorp.de/
424 650

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines