AnyEvent-RFXCOM
view release on metacpan or search on metacpan
lib/AnyEvent/RFXCOM/RX.pm view on Meta::CPAN
use base qw/AnyEvent::RFXCOM::Base Device::RFXCOM::RX/;
use AnyEvent;
use Carp qw/croak/;
use Sub::Name;
use Scalar::Util qw/weaken/;
sub new {
my ($pkg, %p) = @_;
croak $pkg.'->new: callback parameter is required' unless ($p{callback});
my $self = $pkg->SUPER::new(%p);
$self;
}
sub _handle_setup {
my $self = shift;
my $handle = $self->{handle};
my $weak_self = $self;
weaken $weak_self;
$handle->on_rtimeout(subname 'on_rtimeout_cb' => sub {
my ($handle) = @_;
lib/AnyEvent/RFXCOM/RX.pm view on Meta::CPAN
$weak_self->{callback}->(@_);
$weak_self->_write_now();
return 1;
});
});
1;
}
sub _open {
my $self = shift;
$self->SUPER::_open($self->_open_condvar);
return 1;
}
sub _open_serial_port {
my ($self, $cv) = @_;
my $fh = $self->SUPER::_open_serial_port;
$cv->send($fh);
return $cv;
}
sub DESTROY {
$_[0]->cleanup;
}
sub cleanup {
my ($self, $error) = @_;
$self->SUPER::cleanup(@_);
undef $self->{discard_timer};
undef $self->{dup_timer};
}
sub anyevent_read_type {
my ($handle, $cb, $self) = @_;
my $weak_self = $self;
weaken $weak_self;
lib/AnyEvent/RFXCOM/TX.pm view on Meta::CPAN
1;
}
sub transmit {
my $self = shift;
my $cv = AnyEvent->condvar;
my $res = [];
my $weak_cv = $cv;
weaken $weak_cv;
$cv->cb(subname 'transmit_cb' => sub { $weak_cv->send($res->[0]) });
$self->SUPER::transmit(args => [ cv => $cv, result => $res ], @_);
return $cv;
}
sub _open {
my $self = shift;
$self->SUPER::_open($self->_open_condvar);
return 1;
}
sub _open_serial_port {
my ($self, $cv) = @_;
my $fh = $self->SUPER::_open_serial_port;
$cv->send($fh);
return $cv;
}
sub DESTROY {
$_[0]->cleanup;
}
sub cleanup {
my ($self, $error) = @_;
$self->SUPER::cleanup(@_);
undef $self->{discard_timer};
undef $self->{dup_timer};
}
1;
__END__
=pod
lib/AnyEvent/W800.pm view on Meta::CPAN
use constant DEBUG => $ENV{ANYEVENT_W800_DEBUG};
use Carp qw/croak/;
use base qw/AnyEvent::RFXCOM::Base Device::W800/;
use Sub::Name;
use Scalar::Util qw/weaken/;
sub new {
my ($pkg, %p) = @_;
croak $pkg.'->new: callback parameter is required' unless ($p{callback});
my $self = $pkg->SUPER::new(%p);
$self;
}
sub _handle_setup {
my $self = shift;
my $weak_self = $self;
weaken $weak_self;
my $handle = $self->{handle};
$handle->on_rtimeout(subname 'on_rtimeout_cb' => sub {
lib/AnyEvent/W800.pm view on Meta::CPAN
subname 'push_read_cb' => sub {
$weak_self->{callback}->(@_);
$weak_self->_write_now();
return;
});
1;
}
sub _open {
my $self = shift;
$self->SUPER::_open($self->_open_condvar);
return 1;
}
sub _open_serial_port {
my ($self, $cv) = @_;
my $fh = $self->SUPER::_open_serial_port;
$cv->send($fh);
return $cv;
}
sub DESTROY {
$_[0]->cleanup;
}
sub cleanup {
my ($self, $error) = @_;
$self->SUPER::cleanup(@_);
undef $self->{discard_timer};
undef $self->{dup_timer};
}
sub anyevent_read_type {
my ($handle, $cb, $self) = @_;
my $weak_self = $self;
weaken $weak_self;
( run in 1.079 second using v1.01-cache-2.11-cpan-49f99fa48dc )