AnyEvent-Collect
view release on metacpan or search on metacpan
lib/AnyEvent/Collect.pm view on Meta::CPAN
groups => { default => [qw( collect collect_all collect_any event )] },
};
use constant COLLECT_TYPE => 0;
use constant COLLECT_CV => 1;
my @cvs;
sub collect_all(&) {
my( $todo ) = @_;
my $cv = AE::cv;
Event::Wrappable->wrap_events( $todo, sub {
my( $listener ) = @_;
$cv->begin;
my $ended = 0;
return sub { $listener->(@_); $cv->end unless $ended++ };
} );
$cv->recv;
}
*collect = *collect_all;
sub collect_any(&) {
my( $todo ) = @_;
my $cv = AE::cv;
Event::Wrappable->wrap_events( $todo, sub {
my( $listener ) = @_;
return sub { $listener->(@_); $cv->send };
} );
$cv->recv;
}
1;
( run in 0.848 second using v1.01-cache-2.11-cpan-49f99fa48dc )