The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
package Algorithm::FloodControl::Backend;

use utf8;
use strict;
use warnings;

use base 'Class::Accessor::Fast';
__PACKAGE__->mk_accessors( qw/storage prefix expires/ );

=head2 get_info

=cut

sub get_info {
    my $self   = shift;
    my $attempts = shift;
    my $size   = 0;
    my $number = $self->_last_number;
    if ( ! defined $number ) {
        return { 
            size => $size,
            timeout => 0
        };
    }
    my $last_timeout;
    my $timeout;
    while ( defined ( $timeout = $self->get_item($number) ) ){
        if ( ! $attempts || $size < $attempts ) {
            $last_timeout = $timeout;
        }
        $size++;
        $number--;
    }
    return { 
        size => $size, 
        timeout => $last_timeout ? $last_timeout - time : 0
    };
}

1;
__END__

=head1 NAME

Algorithm::FloodControl::Backend

=head1 DESCRIPTION

Base class for all backends

=head1 BUGS

=head1 NOTES

=head1 AUTHOR

Andrey Kostenko (), <andrey@kostenko.name>

=head1 COMPANY

Rambler Internet Holding

=head1 CREATED

06.11.2008 18:32:34 MSK

=cut

use strict;
use warnings;