package Autocache::Strategy::Eviction::LRU::Entry;

use Any::Moose;

use Time::HiRes qw( time );

has 'key' => (
    is => 'ro',
    isa => 'Str',
    required => 1,
);

has 'size' => (
    is => 'ro',
    isa => 'Int',
    required => 1,
);

has 'atime' => (
    is => 'rw',
    isa => 'Num',
    default => sub { time },
);

sub touch
{
    my ($self) = @_;
    $self->atime( time );
}

sub cmp
{
    my ($lhs,$rhs) = @_;
    return $lhs->atime <=> $rhs->atime;
}

no Any::Moose;
__PACKAGE__->meta->make_immutable;

1;