1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73
|
package Collector;
use strict;
use warnings;
sub new
{
my $class = shift;
my $self = bless {}, $class;
$self->_init(@_);
return $self;
}
sub _init
{
my $self = shift;
my $args = shift;
$self->_reset;
$self->_callback( $args->{gen_cb}->($self->_calc_op_callback()) );
$self->_init_returned_cb;
return;
}
sub _callback
{
my $self = shift;
if (@_)
{
$self->{_callback} = shift;
}
return $self->{_callback};
}
sub _returned_cb
{
my $self = shift;
if (@_)
{
$self->{_returned_cb} = shift;
}
return $self->{_returned_cb};
}
sub _init_returned_cb
{
my $self = shift;
$self->_returned_cb(
sub {
return $self->_callback()->(@_);
}
);
return;
}
sub cb
{
return shift->_returned_cb();
}
1;
|