File Coverage

blib/lib/Action/Retry/Strategy/HelperRole/RetriesLimit.pm
Criterion Covered Total %
statement 3 3 100.0
branch n/a
condition n/a
subroutine 1 1 100.0
pod n/a
total 4 4 100.0


line stmt bran cond sub pod time code
1             #
2             # This file is part of Action-Retry
3             #
4             # This software is copyright (c) 2013 by Damien "dams" Krotkine.
5             #
6             # This is free software; you can redistribute it and/or modify it under
7             # the same terms as the Perl 5 programming language system itself.
8             #
9             package Action::Retry::Strategy::HelperRole::RetriesLimit;
10             {
11             $Action::Retry::Strategy::HelperRole::RetriesLimit::VERSION = '0.24';
12             }
13              
14             # ABSTRACT: Helper to be consumed by Action::Retry Strategies, to enable giving up retrying after a number of retries
15              
16 5     5   5945 use Moo::Role;
  5         10  
  5         35  
17              
18             has max_retries_number => (
19             is => 'ro',
20             lazy => 1,
21             default => sub { 10 },
22             );
23              
24             # the current number of retries
25             has _current_retries_number => (
26             is => 'rw',
27             lazy => 1,
28             default => sub { 0 },
29             init_arg => undef,
30             clearer => 1,
31             );
32              
33             around needs_to_retry => sub {
34             my $orig = shift;
35             my $self = shift;
36             defined $self->max_retries_number
37             or return $orig->($self, @_);
38             $orig->($self, @_) && $self->_current_retries_number < $self->max_retries_number
39             };
40              
41             after next_step => sub {
42             my ($self) = @_;
43             $self->_current_retries_number($self->_current_retries_number + 1);
44             };
45              
46             after reset => sub {
47             my ($self) = @_;
48             $self->_clear_current_retries_number;
49             };
50              
51             1;
52              
53             __END__