File Coverage

blib/lib/Autocache/Record.pm
Criterion Covered Total %
statement 31 37 83.7
branch 5 10 50.0
condition n/a
subroutine 8 11 72.7
pod 0 5 0.0
total 44 63 69.8


line stmt bran cond sub pod time code
1             package Autocache::Record;
2              
3 5     5   19 use strict;
  5         5  
  5         108  
4 5     5   14 use warnings;
  5         6  
  5         106  
5              
6 5     5   14 use Autocache::Logger qw(get_logger);
  5         6  
  5         1353  
7              
8             our $AUTOLOAD;
9              
10             sub new
11             {
12 132     132 0 228 my ($class,%args) = @_;
13 132         124 my $now = time;
14             $args{name} = 'unknown'
15 132 50       183 unless defined $args{name};
16             $args{create_time} = $now
17 132 50       192 unless defined $args{create_time};
18 132         267 my $self = { %args };
19 132         266 return bless $self, $class;
20             }
21              
22             sub name
23             {
24 65     65 0 121 $_[0]->{name};
25             }
26              
27             sub create_time
28             {
29 0     0 0 0 $_[0]->{create_time};
30             }
31              
32             sub age
33             {
34 0     0 0 0 time - $_[0]->create_time;
35             }
36              
37             sub to_string
38             {
39 0     0 0 0 my ($self) = @_;
40 0         0 return sprintf 'name: %s - key: %s - create_time: %d - age: %d',
41             $self->name,
42             $self->key,
43             $self->create_time,
44             $self->age;
45             }
46              
47             sub AUTOLOAD
48             {
49 3     3   4 my ($self) = @_;
50 3 50       16 return if $AUTOLOAD =~ /::DESTROY$/;
51 3         9 get_logger()->debug( "AUTOLOAD $AUTOLOAD" );
52 3 50       24 if( $AUTOLOAD =~ m/^.*::(\w+?)$/ )
53             {
54 3         8 my $name = $1;
55             {
56 5     5   20 no strict 'refs';
  5         5  
  5         621  
  3         3  
57 3         12 *{$AUTOLOAD} = sub
58             {
59 257 50   257   278 if( scalar @_ > 1 )
60             {
61 0         0 $_[0]->{$name} = $_[1];
62             }
63             else
64             {
65 257         362 return $_[0]->{$name};
66             }
67 3         19 };
68             }
69 3         3 goto &{$AUTOLOAD};
  3         18  
70             }
71 0           get_logger()->error( "AUTOLOAD failed : $AUTOLOAD" );
72             }
73              
74             1;