1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
|
package CiderWebmail::Cache;
use Moose;
use File::Spec;
use Carp qw/ croak /;
has cache => (is => 'rw', isa => 'HashRef', default => sub { {}; } );
=head2 get()
fetch a key from the per-request cache
return undef if the key was not found in the cache
=cut
sub get {
my ($self, $o) = @_;
croak unless defined $o->{uid};
croak unless defined $o->{key};
croak("hc get w/o mailbox") unless defined $o->{mailbox};
if (exists $self->cache->{$o->{mailbox}}->{$o->{uid}}->{$o->{key}}) {
return $self->cache->{$o->{mailbox}}->{$o->{uid}}->{$o->{key}};
}
return;
}
=head2 set()
insert a key into the per-request cache
=cut
sub set {
my ($self, $o) = @_;
croak unless defined $o->{uid};
croak unless defined $o->{key};
croak unless defined $o->{mailbox};
$self->cache->{$o->{mailbox}}->{$o->{uid}}->{lc($o->{key})} = $o->{data};
return;
}
1;
|