AnyEvent-Memcached

 view release on metacpan or  search on metacpan

examples/incadd.pl  view on Meta::CPAN

my $cv = AnyEvent->condvar;

my @clients;
for (1..100) {
	my $memd = AnyEvent::Memcached->new(
		servers   => [ '127.0.0.1:11211' ],
		namespace => "test:",
	);
	push @clients,$memd;
}
my $t;$t = AE::timer 0,1,sub {
	# every secons one clients will delete a key
	$clients[0]->delete('key1', cb => sub {
		defined $_[0] or warn "delete failed: $_[1]";
		warn $_[0];
	});
} if 0;

# prepare a work.
# delete key and make sure all clients get connected

examples/incadd.pl  view on Meta::CPAN

				$op->();
			});
		};$op->();
	}
	$cv->end;
	
	# and we run deleter, that will make thing "bad"
	my $deleter;$deleter = sub {
		$clients[0]->delete('key1',cb => sub {
			warn "deleted = @_";
			my $wait;$wait = AE::timer 0,0,sub {
				undef $wait;
				$deleter->();
			};
		});
	};$deleter->();
});


$cv->recv;

lib/AnyEvent/Memcached/Peer.pm  view on Meta::CPAN

			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;
				return $self->{con}->$method(@args);
			},
		);
		$t = AnyEvent->timer(
			after => $self->{timeout},# + 0.05, # Since there are timers inside connect, we need to delay a bit longer
			cb => sub {
				#$t or return;
				warn time()." timeout $self->{timeout} cb for $args->[0]" if DEBUG;
				undef $c;undef $t;
				$self or return;
				if ($cb){
					$self->{waitingcb}{int $cb};
					$cb->(undef, "Connect timeout");
				}
			},



( run in 1.102 second using v1.01-cache-2.11-cpan-49f99fa48dc )