… | |
… | |
271 | |
271 | |
272 | Example 2: fire an event after 0.5 seconds, then roughly every second. |
272 | Example 2: fire an event after 0.5 seconds, then roughly every second. |
273 | |
273 | |
274 | my $w = AnyEvent->timer (after => 0.5, interval => 1, cb => sub { |
274 | my $w = AnyEvent->timer (after => 0.5, interval => 1, cb => sub { |
275 | warn "timeout\n"; |
275 | warn "timeout\n"; |
276 | }; |
276 | }); |
277 | |
277 | |
278 | =head3 TIMING ISSUES |
278 | =head3 TIMING ISSUES |
279 | |
279 | |
280 | There are two ways to handle timers: based on real time (relative, "fire |
280 | There are two ways to handle timers: based on real time (relative, "fire |
281 | in 10 seconds") and based on wallclock time (absolute, "fire at 12 |
281 | in 10 seconds") and based on wallclock time (absolute, "fire at 12 |
… | |
… | |
1147 | a longer non-exhaustive list), and the list is heavily biased towards |
1147 | a longer non-exhaustive list), and the list is heavily biased towards |
1148 | modules of the AnyEvent author himself :) |
1148 | modules of the AnyEvent author himself :) |
1149 | |
1149 | |
1150 | =over 4 |
1150 | =over 4 |
1151 | |
1151 | |
1152 | =item L<AnyEvent::Util> |
1152 | =item L<AnyEvent::Util> (part of the AnyEvent distribution) |
1153 | |
1153 | |
1154 | Contains various utility functions that replace often-used blocking |
1154 | Contains various utility functions that replace often-used blocking |
1155 | functions such as C<inet_aton> with event/callback-based versions. |
1155 | functions such as C<inet_aton> with event/callback-based versions. |
1156 | |
1156 | |
1157 | =item L<AnyEvent::Socket> |
1157 | =item L<AnyEvent::Socket> (part of the AnyEvent distribution) |
1158 | |
1158 | |
1159 | Provides various utility functions for (internet protocol) sockets, |
1159 | Provides various utility functions for (internet protocol) sockets, |
1160 | addresses and name resolution. Also functions to create non-blocking tcp |
1160 | addresses and name resolution. Also functions to create non-blocking tcp |
1161 | connections or tcp servers, with IPv6 and SRV record support and more. |
1161 | connections or tcp servers, with IPv6 and SRV record support and more. |
1162 | |
1162 | |
1163 | =item L<AnyEvent::Handle> |
1163 | =item L<AnyEvent::Handle> (part of the AnyEvent distribution) |
1164 | |
1164 | |
1165 | Provide read and write buffers, manages watchers for reads and writes, |
1165 | Provide read and write buffers, manages watchers for reads and writes, |
1166 | supports raw and formatted I/O, I/O queued and fully transparent and |
1166 | supports raw and formatted I/O, I/O queued and fully transparent and |
1167 | non-blocking SSL/TLS (via L<AnyEvent::TLS>). |
1167 | non-blocking SSL/TLS (via L<AnyEvent::TLS>). |
1168 | |
1168 | |
1169 | =item L<AnyEvent::DNS> |
1169 | =item L<AnyEvent::DNS> (part of the AnyEvent distribution) |
1170 | |
1170 | |
1171 | Provides rich asynchronous DNS resolver capabilities. |
1171 | Provides rich asynchronous DNS resolver capabilities. |
1172 | |
1172 | |
1173 | =item L<AnyEvent::HTTP>, L<AnyEvent::IRC>, L<AnyEvent::XMPP>, L<AnyEvent::GPSD>, L<AnyEvent::IGS>, L<AnyEvent::FCP> |
1173 | =item L<AnyEvent::HTTP>, L<AnyEvent::IRC>, L<AnyEvent::XMPP>, L<AnyEvent::GPSD>, L<AnyEvent::IGS>, L<AnyEvent::FCP> |
1174 | |
1174 | |
1175 | Implement event-based interfaces to the protocols of the same name (for |
1175 | Implement event-based interfaces to the protocols of the same name (for |
1176 | the curious, IGS is the International Go Server and FCP is the Freenet |
1176 | the curious, IGS is the International Go Server and FCP is the Freenet |
1177 | Client Protocol). |
1177 | Client Protocol). |
1178 | |
1178 | |
1179 | =item L<AnyEvent::AIO> |
1179 | =item L<AnyEvent::AIO> (part of the AnyEvent distribution) |
1180 | |
1180 | |
1181 | Truly asynchronous (as opposed to non-blocking) I/O, should be in the |
1181 | Truly asynchronous (as opposed to non-blocking) I/O, should be in the |
1182 | toolbox of every event programmer. AnyEvent::AIO transparently fuses |
1182 | toolbox of every event programmer. AnyEvent::AIO transparently fuses |
1183 | L<IO::AIO> and AnyEvent together, giving AnyEvent access to event-based |
1183 | L<IO::AIO> and AnyEvent together, giving AnyEvent access to event-based |
1184 | file I/O, and much more. |
1184 | file I/O, and much more. |
… | |
… | |
1229 | |
1229 | |
1230 | =cut |
1230 | =cut |
1231 | |
1231 | |
1232 | package AnyEvent; |
1232 | package AnyEvent; |
1233 | |
1233 | |
1234 | # basically a tuned-down version of common::sense |
1234 | BEGIN { |
1235 | sub common_sense { |
1235 | require "AnyEvent/constants.pl"; |
1236 | # from common:.sense 3.5 |
1236 | &AnyEvent::common_sense; |
1237 | local $^W; |
|
|
1238 | ${^WARNING_BITS} ^= ${^WARNING_BITS} ^ "\x3c\x3f\x33\x00\x0f\xf0\x0f\xc0\xf0\xfc\x33\x00"; |
|
|
1239 | # use strict vars subs - NO UTF-8, as Util.pm doesn't like this atm. (uts46data.pl) |
|
|
1240 | $^H |= 0x00000600; |
|
|
1241 | } |
1237 | } |
1242 | |
|
|
1243 | BEGIN { AnyEvent::common_sense } |
|
|
1244 | |
1238 | |
1245 | use Carp (); |
1239 | use Carp (); |
1246 | |
1240 | |
1247 | our $VERSION = '7.04'; |
1241 | our $VERSION = '7.05'; |
1248 | our $MODEL; |
1242 | our $MODEL; |
1249 | our @ISA; |
1243 | our @ISA; |
1250 | our @REGISTRY; |
1244 | our @REGISTRY; |
1251 | our $VERBOSE; |
1245 | our $VERBOSE; |
1252 | our %PROTOCOL; # (ipv4|ipv6) => (1|2), higher numbers are preferred |
1246 | our %PROTOCOL; # (ipv4|ipv6) => (1|2), higher numbers are preferred |
1253 | our $MAX_SIGNAL_LATENCY = $ENV{PERL_ANYEVENT_MAX_SIGNAL_LATENCY} || 10; # executes after the BEGIN block below (tainting!) |
1247 | our $MAX_SIGNAL_LATENCY = $ENV{PERL_ANYEVENT_MAX_SIGNAL_LATENCY} || 10; # executes after the BEGIN block below (tainting!) |
1254 | |
1248 | |
1255 | BEGIN { |
1249 | BEGIN { |
1256 | require "AnyEvent/constants.pl"; |
|
|
1257 | |
|
|
1258 | eval "sub TAINT (){" . (${^TAINT}*1) . "}"; |
1250 | eval "sub TAINT (){" . (${^TAINT}*1) . "}"; |
1259 | |
1251 | |
1260 | delete @ENV{grep /^PERL_ANYEVENT_/, keys %ENV} |
1252 | delete @ENV{grep /^PERL_ANYEVENT_/, keys %ENV} |
1261 | if ${^TAINT}; |
1253 | if ${^TAINT}; |
1262 | |
1254 | |