The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
package WWW::Opentracker::Stats::Mode::Fullscrape;

use strict;
use warnings;

use parent qw/
    WWW::Opentracker::Stats::Mode
    Class::Accessor::Fast
/;


__PACKAGE__->_format('txt');
__PACKAGE__->_mode('fscr');

__PACKAGE__->mk_accessors(qw/_stats/);


=head1 NAME

WWW::Opentracker::Stats::Mode::Fullscrape

=head1 DESCRIPTION

Parses the fullscrape statistics from opentracker.

=head1 METHODS

=head2 parse_stats

 Args: $self, $payload

Decodes the plain text data retrieved from the fullscrape statistics of opentracker.

The payload looks like this (no indentation):
 21000
 1701
 36369 seconds (10 hours)
 opentracker full scrape stats, 0 conns/s :: 0 bytes/s.

=cut

sub parse_stats {
    my ($self, $payload) = @_;

    my ($count, $size, $seconds, $count_per_sec, $size_per_sec)
        = $payload =~ m{\A
            (\d+) \s
            (\d+) \s
            (\d+) \s seconds \s \( \d+ \s hours \) \s
            opentracker \s full \s scrape \s stats , \s
                (\d+) \s conns/s \s :: \s (\d+) \s bytes/s \.
        }xms
        or die "Unable to parse payload: $payload";

    my %stats = (
        'count'         => $count,
        'size'          => $size,
        'uptime'        => $seconds,
        'count_per_sec' => $count_per_sec,
        'size_per_sec'  => $size_per_sec,
    );

    return \%stats;
}


=head1 SEE ALSO

L<WWW::Opentracker::Stats::Mode>

=head1 AUTHOR

Knut-Olav Hoven, E<lt>knutolav@gmail.comE<gt>

=head1 COPYRIGHT AND LICENSE

Copyright (C) 2009 by Knut-Olav Hoven

This library is free software; you can redistribute it and/or modify
it under the same terms as Perl itself, either Perl version 5.8.8 or,
at your option, any later version of Perl 5 you may have available.


=cut

1;