package Autocache::WorkQueue; use Any::Moose; use Autocache::Logger qw(get_logger); # # Null Memory Strategy - never expire, in memory cache # has '_queue' => ( is => 'rw', default => sub { [] }, init_arg => undef, ); # # push # sub push { my ($self,$task) = @_; get_logger()->debug( "push" ); push @{$self->_queue}, $task; return 1; } # # pop # sub pop { my ($self,$key,$rec) = @_; get_logger()->debug( "pop" ); shift @{$self->_queue}; } sub size { my ($self,$key,$rec) = @_; get_logger()->debug( "size" ); return scalar @{$self->_queue}; } # # execute # sub execute { my ($self) = @_; get_logger()->debug( "execute" ); return 0 unless $self->size(); my $count = 0; while( my $task = $self->pop ) { $task->(); ++$count; } return $count; } no Any::Moose; __PACKAGE__->meta->make_immutable; 1;