AnyEvent-Worker
view release on metacpan or search on metacpan
lib/AnyEvent/Worker.pm view on Meta::CPAN
my $self = bless \%arg, $class;
$self->{fh} = $client;
AnyEvent::Util::fh_nonblocking $client, 1;
my $rbuf;
my @caller = (caller)[1,2]; # the "default" caller
{
Scalar::Util::weaken (my $self = $self);
$self->{rw} = AnyEvent->io (fh => $client, poll => "r", cb => sub {
return unless $self;
$self->{last_activity} = AnyEvent->now;
my $len = sysread $client, $rbuf, 65536, length $rbuf;
if ($len > 0) {
# we received data, so reset the timer
lib/AnyEvent/Worker.pm view on Meta::CPAN
if (AnyEvent->now > $self->{last_activity} + $self->{timeout}) {
# we did time out
my $req = $self->{queue}[0];
$self->_error (timeout => $req->[1], $req->[2], 1); # timeouts are always fatal
} else {
# we need to re-set the timeout watcher
$self->{tw} = AnyEvent->timer (
after => $self->{last_activity} + $self->{timeout} - AnyEvent->now,
cb => $self->{tw_cb},
);
Scalar::Util::weaken $self;
}
} else {
# no timeout check wanted, or idle
undef $self->{tw};
}
};
$self->{ww_cb} = sub {
return unless $self;
( run in 0.910 second using v1.01-cache-2.11-cpan-65fba6d93b7 )