AnyEvent-Tools
view release on metacpan or search on metacpan
lib/AnyEvent/Tools.pm view on Meta::CPAN
);
our @EXPORT_OK = ( @{ $EXPORT_TAGS{'all'} } );
our @EXPORT = qw();
our $VERSION = '0.12';
sub pool(@)
{
require AnyEvent::Tools::Pool;
no strict 'refs';
no warnings 'redefine';
*{ __PACKAGE__ . "::pool" } = sub (@) {
return AnyEvent::Tools::Pool->new(@_);
};
goto &pool;
}
sub buffer(@)
{
require AnyEvent::Tools::Buffer;
no warnings 'redefine';
no strict 'refs';
*{ __PACKAGE__ . "::buffer" } = sub (@) {
return new AnyEvent::Tools::Buffer(@_);
};
goto &buffer;
}
sub mutex()
{
require AnyEvent::Tools::Mutex;
no strict 'refs';
no warnings 'redefine';
*{ __PACKAGE__ . "::mutex" } = sub () {
return AnyEvent::Tools::Mutex->new;
};
goto &mutex;
}
sub rw_mutex()
{
require AnyEvent::Tools::RWMutex;
no strict 'refs';
no warnings 'redefine';
*{ __PACKAGE__ . "::rw_mutex" } = sub () {
return AnyEvent::Tools::RWMutex->new;
};
goto &rw_mutex;
}
sub _async_repeati($$&;&);
sub async_repeat($&;&) {
my ($count, $cb, $cbe) = @_;
if (!$count) {
$cbe->() if $cbe;
return;
}
return &_async_repeati(0, $count, $cb, $cbe);
}
sub async_for($&;&) {
my ($obj, $cb, $cbe) = @_;
if ('ARRAY' eq ref $obj or "$obj" =~ /=ARRAY\(/) {
unless (@$obj) {
$cbe->() if $cbe;
return;
}
return &async_repeat(
scalar(@$obj),
sub {
my ($g, $index, $first, $last) = @_;
lib/AnyEvent/Tools.pm view on Meta::CPAN
$cb->($g, $keys[$index], $obj->{$keys[$index]}, $first, $last);
},
$cbe
);
}
croak "Usage: async_for ARRAYREF|HASHREF, callback [, end_callback ]";
}
sub async_foreach($&;&) { goto &async_for; }
sub async_rfor($&;&) {
my ($obj, $cb, $cbe) = @_;
if ('ARRAY' eq ref $obj or "$obj" =~ /=ARRAY\(/) {
unless (@$obj) {
$cbe->() if $cbe;
return;
}
return &async_repeat(
scalar(@$obj),
sub {
my ($g, $index, $first, $last) = @_;
lib/AnyEvent/Tools.pm view on Meta::CPAN
$last
);
},
$cbe
);
}
croak "Usage: async_for ARRAYREF|HASHREF, callback [, end_callback ]";
}
sub _async_repeati($$&;&) {
my ($start, $count, $cb, $cbe) = @_;
my $idle;
my $wantarray = wantarray;
$idle = aggressive_idle sub {
my (undef, $guard) = @_;
my $first = $start == 0;
my $last = $start >= $count - 1;
( run in 0.960 second using v1.01-cache-2.11-cpan-65fba6d93b7 )