|
Lines 103-117
sub new {
Link Here
|
| 103 |
$self->{'cache'} = $self->{'fastmmap_cache'}; |
103 |
$self->{'cache'} = $self->{'fastmmap_cache'}; |
| 104 |
} |
104 |
} |
| 105 |
|
105 |
|
| 106 |
# Unless memcache or fastmmap has already been picked, use memory_cache |
|
|
| 107 |
unless ( defined( $self->{'cache'} ) ) { |
| 108 |
if ( can_load( modules => { 'Cache::Memory' => undef } ) |
| 109 |
&& _initialize_memory($self) ) |
| 110 |
{ |
| 111 |
$self->{'cache'} = $self->{'memory_cache'}; |
| 112 |
} |
| 113 |
} |
| 114 |
|
| 115 |
$ENV{DEBUG} && carp "Selected caching system: " . ($self->{'cache'} // 'none'); |
106 |
$ENV{DEBUG} && carp "Selected caching system: " . ($self->{'cache'} // 'none'); |
| 116 |
|
107 |
|
| 117 |
return |
108 |
return |
|
Lines 177-209
sub _initialize_fastmmap {
Link Here
|
| 177 |
return $self; |
168 |
return $self; |
| 178 |
} |
169 |
} |
| 179 |
|
170 |
|
| 180 |
sub _initialize_memory { |
|
|
| 181 |
my ($self) = @_; |
| 182 |
|
| 183 |
# Default cache time for memory is _always_ short unless it's specially |
| 184 |
# defined, to allow it to work reliably in a persistent environment. |
| 185 |
my $cache = Cache::Memory->new( |
| 186 |
'namespace' => $self->{'namespace'}, |
| 187 |
'default_expires' => "$self->{'timeout'} sec" || "10 sec", |
| 188 |
); |
| 189 |
$self->{'memory_cache'} = $cache; |
| 190 |
# Memory cache can't handle complex types for some reason, so we use its |
| 191 |
# freeze and thaw functions. |
| 192 |
$self->{ref($cache) . '_set'} = sub { |
| 193 |
my ($key, $val, $exp) = @_; |
| 194 |
# Refer to set_expiry in Cache::Entry for why we do this 'sec' thing. |
| 195 |
$exp = "$exp sec" if defined $exp; |
| 196 |
# Because we need to use freeze, it must be a reference type. |
| 197 |
$cache->freeze($key, [$val], $exp); |
| 198 |
}; |
| 199 |
$self->{ref($cache) . '_get'} = sub { |
| 200 |
my $res = $cache->thaw(shift); |
| 201 |
return unless defined $res; |
| 202 |
return $res->[0]; |
| 203 |
}; |
| 204 |
return $self; |
| 205 |
} |
| 206 |
|
| 207 |
=head2 is_cache_active |
171 |
=head2 is_cache_active |
| 208 |
|
172 |
|
| 209 |
Routine that checks whether or not a default caching method is active on this |
173 |
Routine that checks whether or not a default caching method is active on this |
| 210 |
- |
|
|