X-Git-Url: http://www.dxcluster.org/gitweb/gitweb.cgi?a=blobdiff_plain;f=perl%2FLRU.pm;h=29fd3c87e46b048525938ab385c73f6d4f4b48b8;hb=1172aa77de530206b0dbb648d8489922a518d502;hp=30b264a525c1ec4afb17d4705d91f8e90ca136de;hpb=325de3f275e5ed25c9bbc1651c48928b27edde0e;p=spider.git diff --git a/perl/LRU.pm b/perl/LRU.pm index 30b264a5..29fd3c87 100644 --- a/perl/LRU.pm +++ b/perl/LRU.pm @@ -11,7 +11,7 @@ # # The structure of the base is:- # -# [next, prev, max objects, count ] +# [next, prev, max objects, count, ] # # @@ -37,8 +37,9 @@ sub newbase my $pkg = shift; my $name = shift; my $max = shift; + my $coderef = shift; confess "LRU->newbase requires a name and maximal count" unless $name && $max; - return $pkg->SUPER::new({ }, $max, 0, $name); + return $pkg->SUPER::new({ }, $max, 0, $name, $coderef); } sub get @@ -86,6 +87,7 @@ sub remove my $q = $self->obj->{$call}; confess("$call is already removed") unless $q; dbg("LRU $self->[5] cache remove $call now $self->[4]/$self->[3]") if isdbg('lru'); + &{$self->[5]}($q->obj) if $self->[5]; $q->obj(1); $q->SUPER::del; delete $self->obj->{$call};