AnyEvent-Collect
view release on metacpan or search on metacpan
lib/AnyEvent/Collect.pm view on Meta::CPAN
version 0.1.0
=head1 SYNOPSIS
use AnyEvent;
use AnyEvent::Collect;
# Wait for all of a collection of events to trigger once:
my( $w1, $w2 );
collect {
$w1 = AE::timer 2, 0, event { say "two" };
$w2 = AE::timer 3, 0, event { say "three" };
}; # Returns after 3 seconds having printed "two" and "three"
# Wait for any of a collection of events to trigger:
my( $w3, $w4 );
collect_any {
$w3 = AE::timer 2, 0, event { say "two" };
$w4 = AE::timer 3, 0, event { say "three" };
};
# Returns after 2 seconds, having printed 2. Note however that
# the other event will still be emitted in another second. If
# you were to then execute the sleep below, it would print three.
# Or using L<ONE>
use ONE::Timer;
use AnyEvent::Collect;
collect {
use strict;
use warnings;
use Test::More tests => 2;
use AnyEvent;
use AnyEvent::Collect;
{
my $cnt = 0;
my( $t1, $t2 );
collect {
$t1 = AE::timer 0.2, 0.2, event { $cnt ++ };
$t2 = AE::timer 0.5, 0.5, event { $cnt += 10 };
};
is( $cnt, 12, "We collected three event triggers of the right kinds" );
}
{
my $cnt = 0;
my( $t1, $t2 );
collect_any {
$t1 = AE::timer 0.2, 0.2, event { $cnt ++ };
$t2 = AE::timer 0.5, 0.5, event { $cnt += 10 };
};
is( $cnt, 1, "We collected only one event of the right kind" );
}
( run in 2.919 seconds using v1.01-cache-2.11-cpan-49f99fa48dc )