Async-Template
view release on metacpan or search on metacpan
# nonblocked multiple procesess
my $cv = AnyEvent->condvar;
$cv->begin;
my $tt2 = Async::Template->new({
DONE => sub{ my $output = shift; $cv->end; },
}) || die Async::Template->error();
$cv->begin;
AnyEvent->timer(after => 10, cb => sub { $cv->end; });
$cv->recv
# usage in perl code for async processes
my $vars = {
some_async_fn => sub {
my ($param, $callback) = @_;
$callback->(error, result);
},
lib/Async/Template.pm view on Meta::CPAN
# nonblocked multiple procesess
my $cv = AnyEvent->condvar;
$cv->begin;
my $tt2 = Async::Template->new({
DONE => sub{ my $output = shift; $cv->end; },
}) || die Async::Template->error();
$cv->begin;
AnyEvent->timer(after => 10, cb => sub { $cv->end; });
$cv->recv
# usage in perl code for async processes
my $vars = {
some_async_fn => sub {
my ($param, $callback) = @_;
$callback->(error, result);
},
t/lib/Template/Plugin/Second.pm view on Meta::CPAN
$value = 'ok' if 2 == scalar @_;
# notify system with error message if somthing wrong
if ( $second < 0 ) {
$cb->( { error => "second($second) is must be positive" } );
return;
}
my $started_at = now;
my $on_timer; $on_timer = sub {
# workaround timer cb called too earlier
my $remaining = $second - (now() - $started_at);
if( $remaining > 0 ) {
$self->{tm} = AE::timer $remaining, 0, $on_timer;
return;
}
# notify system that event done with result any data at param
$cb->( { result => $value } );
};
# start the event with specific on_event handler
$self->{tm} = AE::timer $second, 0, $on_timer;
}
1;
( run in 1.019 second using v1.01-cache-2.11-cpan-49f99fa48dc )