Cache-Memcached-AnyEvent
view release on metacpan or search on metacpan
lib/Cache/Memcached/AnyEvent.pm view on Meta::CPAN
delete $self->{_is_connecting}->{$server}; # thanks, buddy
if (! $fh) {
# connect failed
warn("failed to connect to $server [$!]");
if ($self->{auto_reconnect} > $self->{_connect_attempts}->{ $server }++) {
# XXX this watcher holds a reference to $self, which means
# it will make your program wait for it to fire until
# auto_reconnect attempts have been made.
# if you need to close immediately, you need to call disconnect
$self->{_reconnect}->{$server} = AE::timer $self->{reconnect_delay}, 0, sub {
delete $self->{_reconnect}->{$server};
$self->_connect_one($server);
};
}
} else {
my $h; $h = AnyEvent::Handle->new(
fh => $fh,
on_drain => sub {
my $h = shift;
if (defined $h->{wbuf} && $h->{wbuf} eq "") {
lib/Cache/Memcached/AnyEvent.pm view on Meta::CPAN
return;
}
if ($self->{_is_draining}) {
return;
}
my $cb = shift @{$self->{queue}};
return unless $cb;
my $guard = AnyEvent::Util::guard {
my $t; $t = AE::timer 0, 0, sub {
$self->{_is_draining}--;
undef $t;
$self->_drain_queue;
};
};
$self->{_is_draining}++;
$cb->($guard);
}
sub disconnect {
( run in 0.970 second using v1.01-cache-2.11-cpan-49f99fa48dc )