File Coverage

blib/lib/IO/LockedFile/Flock.pm
Criterion Covered Total %
statement 23 23 100.0
branch 7 8 87.5
condition n/a
subroutine 6 6 100.0
pod 2 2 100.0
total 38 39 97.4


line stmt bran cond sub pod time code
1             package IO::LockedFile::Flock;
2 7     7   49 use strict;
  7         21  
  7         301  
3 7     7   119 use Fcntl ':flock'; # import LOCK_* constants
  7         14  
  7         1127  
4 7     7   42 use Carp;
  7         14  
  7         12341  
5 7     7   49 use vars qw( @ISA );
  7         7  
  7         1561  
6             @ISA = qw( IO::LockedFile );
7              
8             ######################
9             # lock
10             ######################
11             sub lock {
12 39     39 1 72 my $self = shift;
13              
14 39 100       524 my $lock_type = $self->is_writable() ? LOCK_EX : LOCK_SH;
15              
16 39         93 my $got_lock = 0;
17              
18 39 100       201 if ( ! $self->should_block() ) {
19 12         290 $got_lock = flock( $self, $lock_type | LOCK_NB );
20             }
21             else {
22 27 50       300 $got_lock = flock($self, $lock_type)
23             or croak( "Cannot lock: $!");
24             }
25              
26 39 100       436 $self->SUPER::lock() if ($got_lock);
27 39         513 return $got_lock;
28             }
29              
30             ######################
31             # unlock
32             ######################
33             sub unlock {
34 30     30 1 121 my $self = shift;
35 30         443 flock($self, LOCK_UN);
36             # or croak( ref( $self ) . ": Cannot unlock: $!");
37 30         379 $self->SUPER::unlock;
38             }
39              
40             1;
41              
42              
43             __END__