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 {

t/basic.t  view on Meta::CPAN

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 )