AnyEvent-Redis
view release on metacpan or search on metacpan
lib/AnyEvent/Redis.pm view on Meta::CPAN
use 5.008_001;
our $VERSION = '0.24';
use constant DEBUG => $ENV{ANYEVENT_REDIS_DEBUG};
use AnyEvent;
use AnyEvent::Handle;
use AnyEvent::Socket;
use AnyEvent::Redis::Protocol;
use Carp qw( croak confess );
use Encode ();
use Scalar::Util qw(weaken);
our $AUTOLOAD;
sub new {
my ($class, %args) = @_;
my $host = delete $args{host} || '127.0.0.1';
my $port = delete $args{port} || 6379;
if (my $encoding = $args{encoding}) {
lib/AnyEvent/Redis.pm view on Meta::CPAN
my $self = shift;
my $cv;
if (@_) {
$cv = pop if UNIVERSAL::isa($_[-1], 'AnyEvent::CondVar');
$cv ||= AE::cv;
push @{$self->{connect_queue}}, [ $cv, @_ ];
}
return $cv if $self->{sock};
weaken $self;
$self->{sock} = tcp_connect $self->{host}, $self->{port}, sub {
my $fh = shift
or do {
my $err = "Can't connect Redis server: $!";
$self->cleanup($err);
eval { $cv->croak($err) };
warn "Exception in connect failure callback (ignored): $@" if $@;
return
};
lib/AnyEvent/Redis.pm view on Meta::CPAN
my $send = join("\r\n",
"*" . (1 + @_),
map { ('$' . length $_ => $_) }
(uc($command), map { $self->{encoding} && length($_)
? $self->{encoding}->encode($_)
: $_ } @_))
. "\r\n";
warn $send if DEBUG;
# $self is weakened to avoid leaks, hold on to a strong copy
# controlled via a CV.
my $cmd_cv = AE::cv;
$cmd_cv->cb(sub {
my $strong_self = $self;
});
# pubsub is very different - get it out of the way first
if ($is_pubsub) {
( run in 0.238 second using v1.01-cache-2.11-cpan-65fba6d93b7 )