74 lines
844 B
Perl
74 lines
844 B
Perl
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;
|