AnyEvent-Hiredis
view release on metacpan or search on metacpan
lib/AnyEvent/Hiredis.pm view on Meta::CPAN
package AnyEvent::Hiredis;
BEGIN {
$AnyEvent::Hiredis::VERSION = '0.06';
}
# ABSTRACT: AnyEvent hiredis API
use strict;
use warnings;
use namespace::autoclean;
use Hiredis::Async;
use AnyEvent;
sub new {
my ($class, %args) = @_;
my $self = bless {}, $class;
$self->{host} = $args{host} || '127.0.0.1';
$self->{port} = $args{port} || 6379;
$self->{redis} = $self->_connect;
return $self;
}
sub _connect {
my ($self) = @_;
my $redis = Hiredis::Async->new(
host => $self->{host},
port => $self->{port},
addRead => sub { $self->_add_read_cb(@_) },
delRead => sub { $self->_del_read_cb(@_) },
addWrite => sub { $self->_add_write_cb(@_) },
delWrite => sub { $self->_del_write_cb(@_) },
);
return $redis;
}
sub _add_read_cb {
my ($self, $fd) = @_;
return if defined $self->{reader};
$self->{reader} = AnyEvent->io( fh => $fd, poll => 'r', cb => sub {
$self->{redis}->HandleRead;
});
return;
}
sub _del_read_cb {
my ($self, $fd) = @_;
$self->{reader} = undef;
return;
}
sub _add_write_cb {
my ($self, $fd) = @_;
return if defined $self->{writer};
$self->{writer} = AnyEvent->io( fh => $fd, poll => 'w', cb => sub {
$self->{redis}->HandleWrite;
});
( run in 0.726 second using v1.01-cache-2.11-cpan-5a3173703d6 )