root/lang/perl/Data-Valve/trunk/lib/Data/Valve/BucketStore/Memory.pm @ 16071

Revision 16071, 0.8 kB (checked in by daisuke, 5 years ago)

implement strict interval mode

  • Property svn:keywords set to Id
Line 
1# $Id$
2
3package Data::Valve::BucketStore::Memory;
4use Moose;
5
6with 'Data::Valve::BucketStore';
7
8has 'store' => (
9    is => 'rw',
10    isa => 'HashRef',
11    required => 1,
12    default => sub { +{} }
13);
14
15__PACKAGE__->meta->make_immutable;
16
17no Moose;
18
19sub create_bucket
20{
21    my $self = shift;
22    return Data::Valve::Bucket->new(
23        max_items => $self->max_items,
24        interval  => $self->interval,
25        strict_interval => $self->strict_interval,
26    );
27}
28
29sub try_push {
30    my ($self, %args) = @_;
31
32    my $bucket = $self->store()->{ $args{key} };
33    if (! $bucket) {
34        $bucket = $self->create_bucket;
35        $self->store()->{ $args{key} } = $bucket;
36    }
37
38    return $bucket->try_push();
39}
40
411;
42
43__END__
44
45=head1 NAME
46
47Data::Valve::BucketStore::Memory - An In-Memory Bucket Store
48
49=head1 METHODS
50
51=head2 create_bucket
52
53=head2 try_push
54
55=cut
Note: See TracBrowser for help on using the browser.