Cache
view release on metacpan or search on metacpan
lib/Cache/Memory.pm view on Meta::CPAN
my $use_elem = delete $store_entry->{use_elem}
or die 'Cache::Memory data structure(s) corrupted';
$Use_Heaps{$ns}->delete($use_elem);
# reduce size of cache iff there is no active handle
my $size = 0;
my $dataref = delete $store_entry->{data};
unless (exists $store_entry->{handlelock}) {
$size = length($$dataref);
$Store_Sizes{$ns} -= $size;
}
delete $store_entry->{handlelock};
# remove entire entry if there are no active Entry objects
delete $Store{$ns}{$key} unless $store_entry->{rc};
return $size;
}
# UTILITY METHODS
sub add_expiry_to_heap {
my Cache::Memory $self = shift;
my ($key, $time) = @_;
my $exp_elem = Cache::Memory::HeapElem->new($self->{namespace},$key,$time);
$Expiry_Heap->add($exp_elem);
return $exp_elem;
}
sub del_expiry_from_heap {
my Cache::Memory $self = shift;
my ($key, $exp_elem) = @_;
$Expiry_Heap->delete($exp_elem);
}
sub add_age_to_heap {
my Cache::Memory $self = shift;
my ($key, $time) = @_;
my $ns = $self->{namespace};
my $age_elem = Cache::Memory::HeapElem->new($ns,$key,$time);
$Age_Heaps{$ns}->add($age_elem);
return $age_elem;
}
sub add_use_to_heap {
my Cache::Memory $self = shift;
my ($key, $time) = @_;
my $ns = $self->{namespace};
my $use_elem = Cache::Memory::HeapElem->new($ns,$key,$time);
$Use_Heaps{$ns}->add($use_elem);
return $use_elem;
}
sub update_last_used {
my Cache::Memory $self = shift;
my ($key) = @_;
my $ns = $self->{namespace};
my $use_elem = $Store{$ns}{$key}{use_elem}
or die 'Cache::Memory data structure(s) corrupted';
$Use_Heaps{$ns}->delete($use_elem);
$use_elem->val(time());
$Use_Heaps{$ns}->add($use_elem);
}
sub change_size {
my Cache::Memory $self = shift;
my ($size) = @_;
my $ns = $self->{namespace};
$Store_Sizes{$ns} += $size;
$self->check_size($Store_Sizes{$ns}) if $size > 0;
}
sub entry_dropped_final_rc {
my Cache::Memory $self = shift;
my ($key) = @_;
my $ns = $self->{namespace};
delete $Store{$ns}{$key} unless defined $Store{$ns}{$key}{data};
}
1;
__END__
=head1 SEE ALSO
Cache
=head1 AUTHOR
Chris Leishman <chris@leishman.org>
Based on work by DeWitt Clinton <dewitt@unto.net>
=head1 COPYRIGHT
Copyright (C) 2003-2006 Chris Leishman. All Rights Reserved.
This module is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND,
either expressed or implied. This program is free software; you can
redistribute or modify it under the same terms as Perl itself.
$Id: Memory.pm,v 1.9 2006/01/31 15:23:58 caleishm Exp $
=cut
( run in 1.838 second using v1.01-cache-2.11-cpan-39bf76dae61 )