AnyEvent-Memcached
view release on metacpan or search on metacpan
lib/AnyEvent/Memcached/Peer.pm view on Meta::CPAN
package #hide
AnyEvent::Memcached::Peer;
use common::sense 2;m{
use strict;
use warnings;
}x;
use base 'AnyEvent::Connection';
use Carp;
use AnyEvent::Connection::Util;
use Scalar::Util qw(weaken);
#use Devel::Leak::Cb;
sub DEBUG () { 0 }
use AnyEvent::Memcached::Conn;
sub new {
my $self = shift->SUPER::new(
rawcon => 'AnyEvent::Memcached::Conn',
reconnect => 1,
@_,
lib/AnyEvent/Memcached/Peer.pm view on Meta::CPAN
my ($method,$args,$cb) = @_;
if($self->{connecting} and $self->{failed}) {
warn "Is connecting, have fails => not connected" if DEBUG;
$cb and $cb->(undef, "Not connected");
return;
}
elsif (!$self->{connected}) {
my @args = @$args; # copy to avoid rewriting
warn time()." Not connected, do connect for ".\@args.", ".dumper($args[0]) if DEBUG;
my ($c,$t);
weaken( $self->{waitingcb}{int $cb} = $cb ) if $cb;
weaken( $self );
# This rely on correct event invocation order of Object::Event.
# If this could change, I'll add own queue
$c = $self->reg_cb(
connected => sub {
shift->unreg_me;
#$c or return;
warn "connected cb for ".\@args.", ".dumper($args[0]) if DEBUG;
undef $c;undef $t;
$self or return;
delete $self->{waitingcb}{int $cb} if $cb;
( run in 0.383 second using v1.01-cache-2.11-cpan-65fba6d93b7 )