File Coverage

blib/lib/Plack/Middleware/Throttle/Lite/Backend/Memcached.pm
Criterion Covered Total %
statement 19 24 79.1
branch 1 4 25.0
condition n/a
subroutine 6 8 75.0
pod 3 3 100.0
total 29 39 74.3


line stmt bran cond sub pod time code
1             package Plack::Middleware::Throttle::Lite::Backend::Memcached;
2              
3             # ABSTRACT: Memcache-driven storage backend for Throttle-Lite
4              
5 1     1   92912 use strict;
  1         2  
  1         36  
6 1     1   6 use warnings;
  1         1250  
  1         35  
7 1     1   6 use Carp ();
  1         2  
  1         19  
8 1     1   6 use parent 'Plack::Middleware::Throttle::Lite::Backend::Abstract';
  1         1  
  1         7  
9 1     1   13303 use Cache::Memcached::Fast;
  1         2224  
  1         283  
10              
11             our $VERSION = '0.03'; # VERSION
12             our $AUTHORITY = 'cpan:CHIM'; # AUTHORITY
13              
14             __PACKAGE__->mk_attrs(qw(mc));
15              
16             sub init {
17 2     2 1 15609 my ($self, $args) = @_;
18              
19 2         16 my $_handle = Cache::Memcached::Fast->new($args);
20 2 50       319 Carp::croak("Cannot get memcached handle") unless keys %{ $_handle->server_versions };
  2         61588  
21              
22 0           $self->mc($_handle);
23             }
24              
25             sub increment {
26 0     0 1   my ($self) = @_;
27              
28 0           $self->mc->set($self->cache_key, 1 + $self->reqs_done, 1 + $self->expire_in);
29             }
30              
31             sub reqs_done {
32 0     0 1   my ($self) = @_;
33              
34 0 0         $self->mc->get($self->cache_key) || 0;
35             }
36              
37             1; # End of Plack::Middleware::Throttle::Lite::Backend::Memcached
38              
39             __END__