Data-EventStream

 view release on metacpan or  search on metacpan

t/event_stream_mixed.t  view on Meta::CPAN

    },
    {
        time   => 7,
        val    => 47,
        resets => { ctb => "33,52,1", },
        ins    => { t10 => "33,52,1", c3 => "33,52,3", ct => "33,52,1", ctb => "33,52,1", },
    },
    {
        time => 16,
        outs => { t10 => [ "33,52,3", "33,47,5", ], ct => [ "33,52,3", "33,47,5", ], },
        vals => { t10 => "47,47,6", c3 => "33,52,3", ct => "47,47,6", ctb => "NaN,NaN,7", },
    },
    {
        time   => 18,
        val    => 23,
        resets => { ctb => "NaN,NaN,7" },
        outs   => { t10 => "47,47,7", c3 => "33,52,3", ct => "47,47,7", },
        ins    => { t10 => "23,23,8", c3 => "23,47,5", ct => "23,23,8", ctb => "23,23,17", },
    },
    {
        time => 19,
        val  => 15,
        outs => { c3 => "23,47,5", },
        ins  => { t10 => "15,23,9", c3 => "15,47,7", ct => "15,23,9", ctb => "15,23,17", },
    },
    {

t/event_stream_time.t  view on Meta::CPAN

        vals => { t3 => 3.13333, t5 => 2.72973, b4 => 3.13333, b3 => 3.9, },
        add_aggregator => {
            d5 => { duration => 5, batch => 1, disposable => 1, },
        },
        stream => { next_leave => 15.7, },
    },
    {
        time   => 16,
        resets => { b4 => 3.35, },
        outs   => { t3 => 3.84848, },
        vals   => { t3 => 3.93333, t5 => 3, b4 => 4, b3 => 3.93333, d5 => 'NaN', },
        stream => { next_leave => 16.2, },
    },
    {
        time   => 17.1,
        val    => 8,
        resets => { b3 => 3.94286, },
        outs   => { t3 => 4, t5 => 3.18966, },
        ins    => { t3 => 4, t5 => 3.54, b4 => 4, b3 => 4, d5 => 8, },
        stream => { next_leave => 17.7, },
    },

t/lib/Averager.pm  view on Meta::CPAN

    default => 0,
    handles => {
        _inc_count   => 'inc',
        _dec_count   => 'dec',
        _reset_count => 'reset',
    },
);

sub value {
    my $self = shift;
    return $self->_count ? sprintf( "%.6g", $self->_sum / $self->_count ) : 'NaN';
}

sub enter {
    my ( $self, $event ) = @_;
    my $val = $self->value_sub->($event);
    $self->_sum_add($val);
    $self->_inc_count;
}

sub reset {

t/lib/MinMax.pm  view on Meta::CPAN

use Moose;
with 'Data::EventStream::Aggregator';

has value_sub => (
    is      => 'ro',
    default => sub {
        sub { $_[0]->{val} }
    },
);

has max => ( is => 'ro', writer => '_set_max', default => 'NaN', );

has min => ( is => 'ro', writer => '_set_min', default => 'NaN', );

has since => ( is => 'ro', writer => '_set_since', default => 0, );

sub value {
    my $self = shift;
    return join ",", $self->min, $self->max, $self->since;
}

sub enter {
    my ( $self, $event, $window ) = @_;
    my $value = $self->value_sub->($event);
    if ( $self->max ne 'NaN' ) {
        if ( $value > $self->max ) {
            $self->_set_max($value);
        }
        elsif ( $value < $self->min ) {
            $self->_set_min($value);
        }
    }
    else {
        $self->_set_max($value);
        $self->_set_min($value);
        $self->_set_since( $window->start_time );
    }
}

sub reset {
    my ( $self, $window ) = @_;
    $self->_set_max('NaN');
    $self->_set_min('NaN');
    $self->_set_since( $window->start_time );
}

sub leave {
    my ( $self, $event, $window ) = @_;
    my $value = $self->value_sub->($event);
    $self->_set_since( $window->start_time );
    if ( $window->count == 0 ) {
        $self->_set_max('NaN');
        $self->_set_min('NaN');
    }
    elsif ( $value >= $self->max or $value <= $self->min ) {
        my $vs   = $self->value_sub;
        my $min  = my $max = $vs->( $window->get_event(-1) );
        my $next_event = $window->get_iterator;
        while ( my $event = $next_event->() ) {
            my $val = $vs->($event);
            if ( $val < $min ) {
                $min = $val;
            }

t/lib/TimeAverager.pm  view on Meta::CPAN


sub duration {
    my ($self) = @_;
    $self->{_start_point} ? $self->{_end_point}[0] - $self->{_start_point}[0] : 0;
}

sub value {
    my ($self) = @_;
        $self->duration ? 0 + sprintf( "%.6g", $self->{_sum} / $self->duration )
      : $self->{_start_point} ? $self->{_start_point}[1]
      :                         'NaN';
}

sub enter {
    my ( $self, $event, $win ) = @_;
    my ( $time, $value ) = $self->{time_value_sub}->($event);
    $self->{_end_point} = [ $time, $value ];
    unless ( $self->{_start_point} ) {

        # this is the first event we've got
        $self->{_start_point} = [ $time, $value ];



( run in 0.247 second using v1.01-cache-2.11-cpan-4d50c553e7e )