=item L<AnyEvent::BDB>, L<BDB>
Truly asynchronous Berkeley DB access. AnyEvent::AIO transparently fuses
IO::AIO and AnyEvent together.
=item L<IO::Lambda>
The lambda approach to I/O - don't ask, look there. Can use AnyEvent.
=back
=cut
package AnyEvent;
no warnings;
use strict;
use Carp;
our $VERSION = 4.152;
our $MODEL;
our $AUTOLOAD;
our @ISA;
our @REGISTRY;
our $WIN32;
BEGIN {
my $win32 = ! ! ($^O =~ /mswin32/i);
eval "sub WIN32(){ $win32 }";
}
our $verbose = $ENV{PERL_ANYEVENT_VERBOSE}*1;
our %PROTOCOL; # (ipv4|ipv6) => (1|2), higher numbers are preferred
{
my $idx;
$PROTOCOL{$_} = ++$idx
for reverse split /\s*,\s*/,
$ENV{PERL_ANYEVENT_PROTOCOLS} || "ipv4,ipv6";
}
my @models = (
[EV:: => AnyEvent::Impl::EV::],
[Event:: => AnyEvent::Impl::Event::],
[AnyEvent::Impl::Perl:: => AnyEvent::Impl::Perl::],
# everything below here will not be autoprobed
# as the pureperl backend should work everywhere
# and is usually faster
[Tk:: => AnyEvent::Impl::Tk::], # crashes with many handles
[Glib:: => AnyEvent::Impl::Glib::], # becomes extremely slow with many watchers
[Event::Lib:: => AnyEvent::Impl::EventLib::], # too buggy
[Qt:: => AnyEvent::Impl::Qt::], # requires special main program
[POE::Kernel:: => AnyEvent::Impl::POE::], # lasciate ogni speranza
[Wx:: => AnyEvent::Impl::POE::],
[Prima:: => AnyEvent::Impl::POE::],
);
our %method = map +($_ => 1), qw(io timer time now signal child condvar one_event DESTROY);
our @post_detect;
sub post_detect(&) {
my ($cb) = @_;
if ($MODEL) {
$cb->();
1
} else {
push @post_detect, $cb;
defined wantarray
? bless \$cb, "AnyEvent::Util::PostDetect"
: ()
}
}
sub AnyEvent::Util::PostDetect::DESTROY {
@post_detect = grep $_ != ${$_[0]}, @post_detect;
}
sub detect() {
unless ($MODEL) {
no strict 'refs';
local $SIG{__DIE__};
if ($ENV{PERL_ANYEVENT_MODEL} =~ /^([a-zA-Z]+)$/) {
my $model = "AnyEvent::Impl::$1";
if (eval "require $model") {
$MODEL = $model;
warn "AnyEvent: loaded model '$model' (forced by \$PERL_ANYEVENT_MODEL), using it.\n" if $verbose > 1;
} else {
warn "AnyEvent: unable to load model '$model' (from \$PERL_ANYEVENT_MODEL):\n$@" if $verbose;
}
}
=9= |