File Coverage

blib/lib/Cache/SizeAwareFileCache.pm
Criterion Covered Total %
statement 51 51 100.0
branch n/a
condition 2 3 66.6
subroutine 19 19 100.0
pod 7 9 77.7
total 79 82 96.3


line stmt bran cond sub pod time code
1             ######################################################################
2             # $Id: SizeAwareFileCache.pm,v 1.28 2002/04/07 17:04:46 dclinton Exp $
3             # Copyright (C) 2001-2003 DeWitt Clinton All Rights Reserved
4             #
5             # Software distributed under the License is distributed on an "AS
6             # IS" basis, WITHOUT WARRANTY OF ANY KIND, either expressed or
7             # implied. See the License for the specific language governing
8             # rights and limitations under the License.
9             ######################################################################
10              
11              
12             package Cache::SizeAwareFileCache;
13              
14              
15 1     1   339 use strict;
  1         1  
  1         45  
16 1     1   6 use vars qw( @ISA );
  1         1  
  1         46  
17 1     1   466 use Cache::CacheSizer;
  1         2  
  1         27  
18 1     1   4 use Cache::CacheUtils qw( Static_Params );
  1         2  
  1         39  
19 1     1   396 use Cache::FileCache;
  1         3  
  1         61  
20 1     1   7 use Cache::SizeAwareCache qw( $NO_MAX_SIZE );
  1         2  
  1         655  
21              
22              
23             @ISA = qw ( Cache::FileCache Cache::SizeAwareCache );
24              
25              
26             my $DEFAULT_MAX_SIZE = $NO_MAX_SIZE;
27              
28              
29             sub Clear
30             {
31 8     8 1 32 my ( $p_optional_cache_root ) = Static_Params( @_ );
32              
33 8         34 Cache::FileCache::Clear( $p_optional_cache_root );
34             }
35              
36              
37             sub Purge
38             {
39 2     2 1 19 my ( $p_optional_cache_root ) = Static_Params( @_ );
40              
41 2         15 Cache::FileCache::Purge( $p_optional_cache_root );
42             }
43              
44              
45             sub Size
46             {
47 7     7 1 23 my ( $p_optional_cache_root ) = Static_Params( @_ );
48              
49 7         22 return Cache::FileCache::Size( $p_optional_cache_root );
50             }
51              
52              
53             sub new
54             {
55 3     3 1 60 my ( $self ) = _new( @_ );
56 3         12 $self->_complete_initialization( );
57 3         8 return $self;
58             }
59              
60              
61             sub get
62             {
63 32     32 1 66 my ( $self, $p_key ) = @_;
64              
65 32         117 $self->_get_cache_sizer( )->update_access_time( $p_key );
66 32         243 return $self->SUPER::get( $p_key );
67             }
68              
69              
70             sub limit_size
71             {
72 2     2 1 3 my ( $self, $p_new_size ) = @_;
73              
74 2         7 $self->_get_cache_sizer( )->limit_size( $p_new_size );
75             }
76              
77              
78              
79             sub set
80             {
81 33     33 1 81 my ( $self, $p_key, $p_data, $p_expires_in ) = @_;
82              
83 33         188 $self->SUPER::set( $p_key, $p_data, $p_expires_in );
84 33         307 $self->_get_cache_sizer( )->limit_size( $self->get_max_size( ) );
85             }
86              
87              
88              
89             sub _new
90             {
91 3     3   9 my ( $proto, $p_options_hash_ref ) = @_;
92 3   66     15 my $class = ref( $proto ) || $proto;
93 3         32 my $self = $class->SUPER::_new( $p_options_hash_ref );
94 3         8 $self->_initialize_cache_sizer( );
95 3         6 return $self;
96             }
97              
98              
99             sub _initialize_cache_sizer
100             {
101 3     3   5 my ( $self ) = @_;
102              
103 3         6 my $max_size = $self->_read_option( 'max_size', $DEFAULT_MAX_SIZE );
104 3         19 $self->_set_cache_sizer( new Cache::CacheSizer( $self, $max_size ) );
105             }
106              
107              
108             sub get_max_size
109             {
110 33     33 0 42 my ( $self ) = @_;
111              
112 33         64 return $self->_get_cache_sizer( )->get_max_size( );
113             }
114              
115              
116             sub set_max_size
117             {
118 1     1 0 2 my ( $self, $p_max_size ) = @_;
119              
120 1         3 $self->_get_cache_sizer( )->set_max_size( $p_max_size );
121             }
122              
123              
124             sub _get_cache_sizer
125             {
126 101     101   121 my ( $self ) = @_;
127              
128 101         462 return $self->{_Cache_Sizer};
129             }
130              
131              
132             sub _set_cache_sizer
133             {
134 3     3   5 my ( $self, $p_cache_sizer ) = @_;
135              
136 3         6 $self->{_Cache_Sizer} = $p_cache_sizer;
137             }
138              
139              
140              
141              
142             1;
143              
144              
145             __END__