Cache-Ref
view release on metacpan or search on metacpan
lib/Cache/Ref/LIFO.pm view on Meta::CPAN
package Cache::Ref::LIFO;
BEGIN {
$Cache::Ref::LIFO::AUTHORITY = 'cpan:NUFFIN';
}
BEGIN {
$Cache::Ref::LIFO::VERSION = '0.04';
}
# ABSTRACT: Saves entries until full, discarding subsequent sets.
use Moose;
use namespace::autoclean;
extends qw(Cache::Ref);
with (
'Cache::Ref::Role::API',
'Cache::Ref::Role::Index' => {
-alias => {
_index_get => "get",
},
},
);
has size => (
isa => "Int",
is => "ro",
required => 1,
);
has _keys => (
traits => [qw(Array)],
isa => "ArrayRef",
is => "ro",
default => sub { [] },
handles => {
_add_key => "push",
#_splice_keys => "splice",
_clear_keys => "clear",
},
);
sub remove {
my ( $self, @keys ) = @_;
$self->_index_delete(@keys);
my %keys;
undef @keys{@keys};
@{ $self->_keys } = grep { not exists $keys{$_} } @{ $self->_keys };
return;
}
sub clear {
my $self = shift;
$self->_index_clear;
$self->_clear_keys;
return;
}
sub hit { }
sub set {
my ( $self, $key, $value ) = @_;
if ( defined $self->_index_get($key) ) {
$self->_index_set($key, $value)
} elsif ( $self->_index_size < $self->size ) {
$self->_index_set($key, $value);
( run in 1.179 second using v1.01-cache-2.11-cpan-39bf76dae61 )