AnyEvent-Gearman
view release on metacpan or search on metacpan
lib/AnyEvent/Gearman/Client.pm view on Meta::CPAN
sub _add_task {
my ($self, $type, $function, $workload, %cb) = @_;
$function = $self->prefix . "\t" . $function
if $self->prefix;
my $task = AnyEvent::Gearman::Task->new( $function, $workload, %cb );
my $retry; ($retry = sub {
my @js = grep { $_->alive } @{ $self->job_servers };
unless (@js) {
$task->event( on_fail => 'no server available' );
undef $retry;
return;
}
# TODO: hashed server selector
my $js = @js[int rand @js];
$js->add_task(
lib/AnyEvent/Gearman/Connection.pm view on Meta::CPAN
$self->connect;
}
}
sub mark_dead {
my ($self) = @_;
$self->dead_time( time + 10 );
$self->clear_handler;
}
sub alive {
my ($self) = @_;
$self->dead_time <= time;
}
sub process_packet {
my $self = shift;
my $handle = $self->handler;
$handle->unshift_read(chunk => 4, sub {
unless ($_[1] eq "\0RES") {
lib/AnyEvent/Gearman/Connection.pm view on Meta::CPAN
=head1 METHODS
=head2 connect
=head2 connected
=head2 add_on_ready
=head2 mark_dead
=head2 alive
=head2 process_packet
=head1 AUTHOR
Daisuke Murase <typester@cpan.org>
Pedro Melo <melo@cpan.org>
=head1 COPYRIGHT AND LICENSE
( run in 0.844 second using v1.01-cache-2.11-cpan-df04353d9ac )