The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
# -*- perl -*-

# Copyright (c) 2009 AdCopy
# Author: Jeff Weisberg
# Created: 2009-Apr-06 13:27 (EDT)
# Function: internal stats monitoring
#
# $Id: Stats.pm,v 1.1 2010/11/01 18:41:45 jaw Exp $

package AC::MrGamoo::Stats;
use AC::MrGamoo::Debug 'stats';
use AC::Import;
use strict;

our @EXPORT = qw(add_idle loadave inc_stat);

my $loadave = 0;
my %STATS;

sub add_idle {
    my $idle  = shift;
    my $total = shift;

    # decaying average
    return unless $total;
    my $load = 1 - $idle / $total;
    $total = 60 if $total > 60;
    my $exp = exp( - $total / 60 );
    $loadave = $loadave * $exp + $load * (1 - $exp);
}

sub loadave {
    return $loadave;
}

sub inc_stat {
    my $stat = shift;

    $STATS{$stat} ++;
}


################################################################

sub http_load {

    return sprintf("loadave:    %0.4f\n\n", loadave());
}

sub http_stats {

    my $res;
    for my $k (sort keys %STATS){
        $res .= sprintf("%-24s%s\n", "$k:", $STATS{$k});
    }

    $res .= "\n";
    return $res;
}

sub http_status {
    return "status: OK\n\n";
}


1;