AnyEvent-Retry
view release on metacpan or search on metacpan
lib/AnyEvent/Retry.pm view on Meta::CPAN
package AnyEvent::Retry;
BEGIN {
$AnyEvent::Retry::VERSION = '0.03';
}
# ABSTRACT: try something until it works
use Moose;
use MooseX::Types::Common::Numeric qw(PositiveNum);
use AnyEvent::Retry::Types qw(Interval);
use AnyEvent;
use Try::Tiny;
use Scalar::Util qw(weaken);
use true;
use namespace::autoclean;
has 'after' => (
is => 'ro',
isa => PositiveNum,
default => 0,
);
has 'interval' => (
is => 'ro',
isa => Interval,
required => 1,
coerce => 1,
);
has '_sent_result' => (
accessor => '_sent_result',
isa => 'Bool',
default => 0,
);
has [qw/try on_failure on_success/] => (
is => 'ro',
isa => 'CodeRef',
required => 1,
);
has 'max_tries' => (
is => 'ro',
isa => PositiveNum,
default => 0,
);
has 'autostart' => (
is => 'ro',
isa => 'Bool',
default => 0,
);
has '_timer' => (
init_arg => undef,
writer => '_set_timer',
clearer => 'kill_timer',
predicate => 'has_timer',
);
sub BUILD {
my $self = shift;
$self->start if $self->autostart;
}
sub DEMOLISH {
my $self = shift;
$self->kill_timer;
if(!$self->_sent_result){
$self->_sent_result(1);
( run in 2.573 seconds using v1.01-cache-2.11-cpan-39bf76dae61 )