AnyEvent-Task
view release on metacpan or search on metacpan
lib/AnyEvent/Task/Client.pm view on Meta::CPAN
$self->populate_workers;
return $self;
}
sub populate_workers {
my ($self) = @_;
Scalar::Util::weaken($self);
return if $self->{total_workers} >= $self->{max_workers};
my $workers_to_create = $self->{min_workers} - $self->{total_workers};
if ($workers_to_create <= 0) {
$workers_to_create = 0;
$workers_to_create = 1 unless keys %{$self->{available_workers}} || keys %{$self->{connecting_workers}};
}
for (1 .. $workers_to_create) {
lib/AnyEvent/Task/Client.pm view on Meta::CPAN
if (keys %{$self->{available_workers}}) {
my @available_workers = values %{$self->{available_workers}};
my $worker = shift @available_workers;
$self->make_worker_occupied($worker);
my $checkout = shift @{$self->{pending_checkouts}};
$checkout->{worker} = $worker;
$self->{workers_to_checkouts}->{0 + $worker} = $checkout;
Scalar::Util::weaken($self->{workers_to_checkouts}->{0 + $worker});
$checkout->_try_to_fill_requests;
return $self->try_to_fill_pending_checkouts;
}
$self->populate_workers;
}
lib/AnyEvent/Task/Client/Checkout.pm view on Meta::CPAN
our $AUTOLOAD;
sub _new {
my ($class, %arg) = @_;
my $self = {};
bless $self, $class;
$self->{client} = $arg{client};
Scalar::Util::weaken($self->{client});
$self->{timeout} = exists $arg{timeout} ? $arg{timeout} :
exists $arg{client}->{timeout} ? $arg{client}->{timeout} :
30;
$self->{log_defer_object} = $arg{log_defer_object} if exists $arg{log_defer_object};
$self->{pending_requests} = [];
return $self;
lib/AnyEvent/Task/Client/Checkout.pm view on Meta::CPAN
sub _try_to_fill_requests {
my ($self) = @_;
return unless exists $self->{worker};
return unless @{$self->{pending_requests}};
my $request = shift @{$self->{pending_requests}};
my $cb = pop @{$request};
$self->{current_cb} = $cb;
Scalar::Util::weaken($self->{current_cb});
if ($self->{fatal_error}) {
$self->_throw_error($self->{fatal_error});
return;
}
my $method_name = $request->[0];
if (!defined $method_name) {
$method_name = '->()';
( run in 0.685 second using v1.01-cache-2.11-cpan-65fba6d93b7 )