AnyEvent-Retry

 view release on metacpan or  search on metacpan

MANIFEST  view on Meta::CPAN

lib/AnyEvent/Retry/Interval.pm
lib/AnyEvent/Retry/Interval/API.pm
lib/AnyEvent/Retry/Interval/Constant.pm
lib/AnyEvent/Retry/Interval/Fibonacci.pm
lib/AnyEvent/Retry/Interval/Multi.pm
lib/AnyEvent/Retry/Types.pm
t/intervals/constant.t
t/intervals/fib.t
t/intervals/multi.t
t/release-pod-syntax.t
t/retry-basic-coro.t
t/retry-basic.t
t/retry-maxtimes.t
t/retry-undef.t

lib/AnyEvent/Retry/Coro.pm  view on Meta::CPAN

    required => 0,
    writer   => 'set_failure_cb',
);

has '+on_success' => (
    init_arg => undef,
    required => 0,
    writer   => 'set_success_cb',
);

has 'running_coro' => (
    init_arg => undef,
    accessor => 'running_coro',
    clearer  => 'clear_running_coro',
);

before start => sub {
    my $self = shift;
    Scalar::Util::weaken($self);
    my $cb = Coro::rouse_cb;
    $self->set_failure_cb( sub { $cb->( error   => @_ ) } );
    $self->set_success_cb( sub { $cb->( success => @_ ) } );
};

lib/AnyEvent/Retry/Coro.pm  view on Meta::CPAN

    }
    catch {
        warn $_;
        return (0, 'error', $_);
    }
};

override handle_tick => sub {
    my ($self, $i) = @_;
    weaken $self;
    $self->running_coro(async {
        $self->handle_result($self->run_code);
        $self->clear_running_coro if defined $self;
    });
};

sub DEMOLISH {
    my $self = shift;
    $self->running_coro->throw('DEMOLISH');
}

sub wait {
    my ($status, @args) = Coro::rouse_wait();
    return $args[0] if $status eq 'success';
    die $args[1];
}

sub run {
    my $self = shift;



( run in 0.882 second using v1.01-cache-2.11-cpan-87723dcf8b7 )