File Coverage

blib/lib/Data/Log/Shared.pm
Criterion Covered Total %
statement 17 17 100.0
branch 6 8 75.0
condition 2 2 100.0
subroutine 3 3 100.0
pod 0 1 0.0
total 28 31 90.3


line stmt bran cond sub pod time code
1             package Data::Log::Shared;
2 6     6   765183 use strict;
  6         11  
  6         229  
3 6     6   43 use warnings;
  6         11  
  6         1354  
4             our $VERSION = '0.04';
5             require XSLoader;
6             XSLoader::load('Data::Log::Shared', $VERSION);
7              
8             sub each_entry {
9 9     9 0 719495 my ($self, $cb, $from, $abandon_wait_us) = @_;
10 9   100     77 $from //= 0;
11 9         46 my $trunc = $self->truncation;
12 9 100       45 $from = $trunc if $from < $trunc;
13 9 50       32 my @wait = defined $abandon_wait_us ? ($abandon_wait_us) : ();
14 9         18 while (1) {
15 230         759 my ($data, $next) = $self->read_entry($from, @wait);
16 230 100       527 last unless defined $next; # end of log / uncommitted in-flight
17 221 50       631 $cb->($data, $from) if defined $data; # skip abandoned slots silently
18 221         603 $from = $next;
19             }
20 9         31 return $from;
21             }
22              
23             1;
24             __END__