File Coverage

blib/lib/Paws/Net/RetryCallerRole.pm
Criterion Covered Total %
statement 21 21 100.0
branch 4 4 100.0
condition n/a
subroutine 4 4 100.0
pod 0 1 0.0
total 29 30 96.6


line stmt bran cond sub pod time code
1             package Paws::Net::RetryCallerRole;
2 11     11   37242 use Moose::Role;
  11         24  
  11         104  
3 11     11   62146 use Time::HiRes 'sleep';
  11         11878  
  11         42  
4 11     11   6104 use Paws::API::Retry;
  11         51  
  11         2531  
5              
6             sub do_call {
7 89     89 0 276 my ($self, $service, $call_object) = @_;
8            
9             my $tracker = Paws::API::Retry->new(
10 89         178 %{ $service->retry },
  89         1820  
11             max_tries => $service->max_attempts,
12             retry_rules => $service->retriables,
13             );
14              
15 89         207 do {
16 113         507 $tracker->one_more_try;
17              
18 113         739 my ($status, $content, $headers) = $self->send_request($service, $call_object);
19 113         3731 my $result = $self->caller_to_response($service, $call_object, $status, $content, $headers);
20 113         260988 $tracker->operation_result($result);
21              
22 113 100       514 sleep $tracker->sleep_time if($tracker->should_retry);
23             } while ($tracker->should_retry);
24              
25 89 100       231 if ($tracker->result_is_exception){
26 37         883 $tracker->operation_result->throw;
27             } else {
28 52         1064 return $tracker->operation_result;
29             }
30             }
31              
32             requires 'send_request';
33             1;