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

Comparing AnyEvent/README (file contents):
Revision 1.67 by root, Fri Aug 26 05:33:53 2011 UTC vs.
Revision 1.70 by root, Fri Apr 13 09:57:41 2012 UTC

403 will not restart syscalls (that includes Async::Interrupt and AnyEvent's 403 will not restart syscalls (that includes Async::Interrupt and AnyEvent's
404 pure perl implementation). 404 pure perl implementation).
405 405
406 Safe/Unsafe Signals 406 Safe/Unsafe Signals
407 Perl signals can be either "safe" (synchronous to opcode handling) or 407 Perl signals can be either "safe" (synchronous to opcode handling) or
408 "unsafe" (asynchronous) - the former might get delayed indefinitely, the 408 "unsafe" (asynchronous) - the former might delay signal delivery
409 latter might corrupt your memory. 409 indefinitely, the latter might corrupt your memory.
410 410
411 AnyEvent signal handlers are, in addition, synchronous to the event 411 AnyEvent signal handlers are, in addition, synchronous to the event
412 loop, i.e. they will not interrupt your running perl program but will 412 loop, i.e. they will not interrupt your running perl program but will
413 only be called as part of the normal event handling (just like timer, 413 only be called as part of the normal event handling (just like timer,
414 I/O etc. callbacks, too). 414 I/O etc. callbacks, too).
416 Signal Races, Delays and Workarounds 416 Signal Races, Delays and Workarounds
417 Many event loops (e.g. Glib, Tk, Qt, IO::Async) do not support attaching 417 Many event loops (e.g. Glib, Tk, Qt, IO::Async) do not support attaching
418 callbacks to signals in a generic way, which is a pity, as you cannot do 418 callbacks to signals in a generic way, which is a pity, as you cannot do
419 race-free signal handling in perl, requiring C libraries for this. 419 race-free signal handling in perl, requiring C libraries for this.
420 AnyEvent will try to do its best, which means in some cases, signals 420 AnyEvent will try to do its best, which means in some cases, signals
421 will be delayed. The maximum time a signal might be delayed is specified 421 will be delayed. The maximum time a signal might be delayed is 10
422 in $AnyEvent::MAX_SIGNAL_LATENCY (default: 10 seconds). This variable 422 seconds by default, but can be overriden via
423 can be changed only before the first signal watcher is created, and 423 $ENV{PERL_ANYEVENT_MAX_SIGNAL_LATENCY} or $AnyEvent::MAX_SIGNAL_LATENCY
424 should be left alone otherwise. This variable determines how often 424 - see the "ENVIRONMENT VARIABLES" section for details.
425 AnyEvent polls for signals (in case a wake-up was missed). Higher values
426 will cause fewer spurious wake-ups, which is better for power and CPU
427 saving.
428 425
429 All these problems can be avoided by installing the optional 426 All these problems can be avoided by installing the optional
430 Async::Interrupt module, which works with most event loops. It will not 427 Async::Interrupt module, which works with most event loops. It will not
431 work with inherently broken event loops such as Event or Event::Lib (and 428 work with inherently broken event loops such as Event or Event::Lib (and
432 not with POE currently, as POE does its own workaround with one-second
433 latency). For those, you just have to suffer the delays. 429 not with POE currently). For those, you just have to suffer the delays.
434 430
435 CHILD PROCESS WATCHERS 431 CHILD PROCESS WATCHERS
436 $w = AnyEvent->child (pid => <process id>, cb => <callback>); 432 $w = AnyEvent->child (pid => <process id>, cb => <callback>);
437 433
438 You can also watch for a child process exit and catch its exit status. 434 You can also watch for a child process exit and catch its exit status.
839 AnyEvent::Impl::EventLib based on Event::Lib, leaks memory and worse. 835 AnyEvent::Impl::EventLib based on Event::Lib, leaks memory and worse.
840 AnyEvent::Impl::POE based on POE, very slow, some limitations. 836 AnyEvent::Impl::POE based on POE, very slow, some limitations.
841 AnyEvent::Impl::Irssi used when running within irssi. 837 AnyEvent::Impl::Irssi used when running within irssi.
842 AnyEvent::Impl::IOAsync based on IO::Async. 838 AnyEvent::Impl::IOAsync based on IO::Async.
843 AnyEvent::Impl::Cocoa based on Cocoa::EventLoop. 839 AnyEvent::Impl::Cocoa based on Cocoa::EventLoop.
844 AnyEvent::Impl::FLTK2 based on FLTK (fltk 2 binding). 840 AnyEvent::Impl::FLTK based on FLTK (fltk 2 binding).
845 841
846 Backends with special needs. 842 Backends with special needs.
847 Qt requires the Qt::Application to be instantiated first, but will 843 Qt requires the Qt::Application to be instantiated first, but will
848 otherwise be picked up automatically. As long as the main program 844 otherwise be picked up automatically. As long as the main program
849 instantiates the application before any AnyEvent watchers are 845 instantiates the application before any AnyEvent watchers are
1010 If AnyEvent::Log is not loaded then this function makes a simple 1006 If AnyEvent::Log is not loaded then this function makes a simple
1011 test to see whether the message will be logged. If the test succeeds 1007 test to see whether the message will be logged. If the test succeeds
1012 it will load AnyEvent::Log and call "AnyEvent::Log::log" - 1008 it will load AnyEvent::Log and call "AnyEvent::Log::log" -
1013 consequently, look at the AnyEvent::Log documentation for details. 1009 consequently, look at the AnyEvent::Log documentation for details.
1014 1010
1015 If the test fails it will simply return. 1011 If the test fails it will simply return. Right now this happens when
1012 a numerical loglevel is used and it is larger than the level
1013 specified via $ENV{PERL_ANYEVENT_VERBOSE}.
1016 1014
1017 If you want to sprinkle loads of logging calls around your code, 1015 If you want to sprinkle loads of logging calls around your code,
1018 consider creating a logger callback with the "AnyEvent::Log::logger" 1016 consider creating a logger callback with the "AnyEvent::Log::logger"
1019 function, which can reduce typing, codesize and can reduce the 1017 function, which can reduce typing, codesize and can reduce the
1020 logging overhead enourmously. 1018 logging overhead enourmously.
1216 This ensures that child processes will not see the "AE_" variables. 1214 This ensures that child processes will not see the "AE_" variables.
1217 1215
1218 The following environment variables are currently known to AnyEvent: 1216 The following environment variables are currently known to AnyEvent:
1219 1217
1220 "PERL_ANYEVENT_VERBOSE" 1218 "PERL_ANYEVENT_VERBOSE"
1221 By default, AnyEvent will be completely silent except in fatal 1219 By default, AnyEvent will log messages with loglevel 4 ("error") or
1222 conditions. You can set this environment variable to make AnyEvent 1220 higher (see AnyEvent::Log). You can set this environment variable to
1223 more talkative. If you want to do more than just set the global 1221 a numerical loglevel to make AnyEvent more (or less) talkative.
1222
1223 If you want to do more than just set the global logging level you
1224 logging level you should have a look at "PERL_ANYEVENT_LOG", which 1224 should have a look at "PERL_ANYEVENT_LOG", which allows much more
1225 allows much more complex specifications. 1225 complex specifications.
1226 1226
1227 When set to 0 ("off"), then no messages whatsoever will be logged
1228 with everything else at defaults.
1229
1227 When set to 5 or higher (warn), causes AnyEvent to warn about 1230 When set to 5 or higher ("warn"), AnyEvent warns about unexpected
1228 unexpected conditions, such as not being able to load the event 1231 conditions, such as not being able to load the event model specified
1229 model specified by "PERL_ANYEVENT_MODEL", or a guard callback 1232 by "PERL_ANYEVENT_MODEL", or a guard callback throwing an exception
1230 throwing an exception - this is the minimum recommended level. 1233 - this is the minimum recommended level for use during development.
1231 1234
1232 When set to 7 or higher (info), cause AnyEvent to report which event 1235 When set to 7 or higher (info), AnyEvent reports which event model
1233 model it chooses. 1236 it chooses.
1234 1237
1235 When set to 8 or higher (debug), then AnyEvent will report extra 1238 When set to 8 or higher (debug), then AnyEvent will report extra
1236 information on which optional modules it loads and how it implements 1239 information on which optional modules it loads and how it implements
1237 certain features. 1240 certain features.
1238 1241
1250 itself. 1253 itself.
1251 1254
1252 Note that specifying this environment variable causes the 1255 Note that specifying this environment variable causes the
1253 AnyEvent::Log module to be loaded, while "PERL_ANYEVENT_VERBOSE" 1256 AnyEvent::Log module to be loaded, while "PERL_ANYEVENT_VERBOSE"
1254 does not, so only using the latter saves a few hundred kB of memory 1257 does not, so only using the latter saves a few hundred kB of memory
1255 until the first message is being logged. 1258 unless a module explicitly needs the extra features of
1259 AnyEvent::Log.
1256 1260
1257 "PERL_ANYEVENT_STRICT" 1261 "PERL_ANYEVENT_STRICT"
1258 AnyEvent does not do much argument checking by default, as thorough 1262 AnyEvent does not do much argument checking by default, as thorough
1259 argument checking is very costly. Setting this variable to a true 1263 argument checking is very costly. Setting this variable to a true
1260 value will cause AnyEvent to load "AnyEvent::Strict" and then to 1264 value will cause AnyEvent to load "AnyEvent::Strict" and then to
1267 is definitely recommended to keep it off in production. Keeping 1271 is definitely recommended to keep it off in production. Keeping
1268 "PERL_ANYEVENT_STRICT=1" in your environment while developing 1272 "PERL_ANYEVENT_STRICT=1" in your environment while developing
1269 programs can be very useful, however. 1273 programs can be very useful, however.
1270 1274
1271 "PERL_ANYEVENT_DEBUG_SHELL" 1275 "PERL_ANYEVENT_DEBUG_SHELL"
1272 If this env variable is set, then its contents will be interpreted 1276 If this env variable is nonempty, then its contents will be
1273 by "AnyEvent::Socket::parse_hostport" (after replacing every 1277 interpreted by "AnyEvent::Socket::parse_hostport" and
1274 occurance of $$ by the process pid) and an "AnyEvent::Debug::shell" 1278 "AnyEvent::Debug::shell" (after replacing every occurance of $$ by
1275 is bound on that port. The shell object is saved in 1279 the process pid). The shell object is saved in
1276 $AnyEvent::Debug::SHELL. 1280 $AnyEvent::Debug::SHELL.
1277 1281
1278 This happens when the first watcher is created. 1282 This happens when the first watcher is created.
1279 1283
1280 For example, to bind a debug shell on a unix domain socket in 1284 For example, to bind a debug shell on a unix domain socket in
1281 /tmp/debug<pid>.sock, you could use this: 1285 /tmp/debug<pid>.sock, you could use this:
1282 1286
1283 PERL_ANYEVENT_DEBUG_SHELL=/tmp/debug\$\$.sock perlprog 1287 PERL_ANYEVENT_DEBUG_SHELL=/tmp/debug\$\$.sock perlprog
1288 # connect with e.g.: socat readline /tmp/debug123.sock
1284 1289
1290 Or to bind to tcp port 4545 on localhost:
1291
1292 PERL_ANYEVENT_DEBUG_SHELL=127.0.0.1:4545 perlprog
1293 # connect with e.g.: telnet localhost 4545
1294
1285 Note that creating sockets in /tmp is very unsafe on multiuser 1295 Note that creating sockets in /tmp or on localhost is very unsafe on
1286 systems. 1296 multiuser systems.
1287 1297
1288 "PERL_ANYEVENT_DEBUG_WRAP" 1298 "PERL_ANYEVENT_DEBUG_WRAP"
1289 Can be set to 0, 1 or 2 and enables wrapping of all watchers for 1299 Can be set to 0, 1 or 2 and enables wrapping of all watchers for
1290 debugging purposes. See "AnyEvent::Debug::wrap" for details. 1300 debugging purposes. See "AnyEvent::Debug::wrap" for details.
1291 1301
1306 1316
1307 For example, to force the pure perl model (AnyEvent::Loop::Perl) you 1317 For example, to force the pure perl model (AnyEvent::Loop::Perl) you
1308 could start your program like this: 1318 could start your program like this:
1309 1319
1310 PERL_ANYEVENT_MODEL=Perl perl ... 1320 PERL_ANYEVENT_MODEL=Perl perl ...
1321
1322 "PERL_ANYEVENT_IO_MODEL"
1323 The current file I/O model - see AnyEvent::IO for more info.
1324
1325 At the moment, only "Perl" (small, pure-perl, synchronous) and
1326 "IOAIO" (truly asynchronous) are supported. The default is "IOAIO"
1327 if AnyEvent::AIO can be loaded, otherwise it is "Perl".
1311 1328
1312 "PERL_ANYEVENT_PROTOCOLS" 1329 "PERL_ANYEVENT_PROTOCOLS"
1313 Used by both AnyEvent::DNS and AnyEvent::Socket to determine 1330 Used by both AnyEvent::DNS and AnyEvent::Socket to determine
1314 preferences for IPv4 or IPv6. The default is unspecified (and might 1331 preferences for IPv4 or IPv6. The default is unspecified (and might
1315 change, or be the result of auto probing). 1332 change, or be the result of auto probing).
1351 1368
1352 "PERL_ANYEVENT_MAX_OUTSTANDING_DNS" 1369 "PERL_ANYEVENT_MAX_OUTSTANDING_DNS"
1353 The default value for the "max_outstanding" parameter for the 1370 The default value for the "max_outstanding" parameter for the
1354 default DNS resolver - this is the maximum number of parallel DNS 1371 default DNS resolver - this is the maximum number of parallel DNS
1355 requests that are sent to the DNS server. 1372 requests that are sent to the DNS server.
1373
1374 "PERL_ANYEVENT_MAX_SIGNAL_LATENCY"
1375 Perl has inherently racy signal handling (you can basically choose
1376 between losing signals and memory corruption) - pure perl event
1377 loops (including "AnyEvent::Loop", when "Async::Interrupt" isn't
1378 available) therefore have to poll regularly to avoid losing signals.
1379
1380 Some event loops are racy, but don't poll regularly, and some event
1381 loops are written in C but are still racy. For those event loops,
1382 AnyEvent installs a timer that regularly wakes up the event loop.
1383
1384 By default, the interval for this timer is 10 seconds, but you can
1385 override this delay with this environment variable (or by setting
1386 the $AnyEvent::MAX_SIGNAL_LATENCY variable before creating signal
1387 watchers).
1388
1389 Lower values increase CPU (and energy) usage, higher values can
1390 introduce long delays when reaping children or waiting for signals.
1391
1392 The AnyEvent::Async module, if available, will be used to avoid this
1393 polling (with most event loops).
1356 1394
1357 "PERL_ANYEVENT_RESOLV_CONF" 1395 "PERL_ANYEVENT_RESOLV_CONF"
1358 The absolute path to a resolv.conf-style file to use instead of 1396 The absolute path to a resolv.conf-style file to use instead of
1359 /etc/resolv.conf (or the OS-specific configuration) in the default 1397 /etc/resolv.conf (or the OS-specific configuration) in the default
1360 resolver, or the empty string to select the default configuration. 1398 resolver, or the empty string to select the default configuration.
2043 AnyEvent::Impl::IOAsync, Anyevent::Impl::Irssi, AnyEvent::Impl::FLTK. 2081 AnyEvent::Impl::IOAsync, Anyevent::Impl::Irssi, AnyEvent::Impl::FLTK.
2044 2082
2045 Non-blocking handles, pipes, stream sockets, TCP clients and servers: 2083 Non-blocking handles, pipes, stream sockets, TCP clients and servers:
2046 AnyEvent::Handle, AnyEvent::Socket, AnyEvent::TLS. 2084 AnyEvent::Handle, AnyEvent::Socket, AnyEvent::TLS.
2047 2085
2086 Asynchronous File I/O: AnyEvent::IO.
2087
2048 Asynchronous DNS: AnyEvent::DNS. 2088 Asynchronous DNS: AnyEvent::DNS.
2049 2089
2050 Thread support: Coro, Coro::AnyEvent, Coro::EV, Coro::Event. 2090 Thread support: Coro, Coro::AnyEvent, Coro::EV, Coro::Event.
2051 2091
2052 Nontrivial usage examples: AnyEvent::GPSD, AnyEvent::IRC, 2092 Nontrivial usage examples: AnyEvent::GPSD, AnyEvent::IRC,
2053 AnyEvent::HTTP. 2093 AnyEvent::HTTP.
2054 2094
2055AUTHOR 2095AUTHOR
2056 Marc Lehmann <schmorp@schmorp.de> 2096 Marc Lehmann <schmorp@schmorp.de>
2057 http://home.schmorp.de/ 2097 http://anyevent.schmorp.de
2058 2098

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines