AnyEvent-OWNet
view release on metacpan or search on metacpan
lib/AnyEvent/OWNet.pm view on Meta::CPAN
use strict;
use warnings;
package AnyEvent::OWNet;
$AnyEvent::OWNet::VERSION = '1.163170';
# ABSTRACT: Client for 1-wire File System server
use 5.008;
use constant DEBUG => $ENV{ANYEVENT_OWNET_DEBUG};
use AnyEvent;
use AnyEvent::Handle;
use AnyEvent::Socket;
use Carp qw/croak/;
use Sub::Name;
use Try::Tiny;
use AnyEvent::OWNet::Constants;
use AnyEvent::OWNet::Response;
sub new {
my ($pkg, %p) = @_;
bless
{
connect_queue => [],
host => '127.0.0.1',
port => 4304,
timeout => 5,
%p,
}, $pkg;
}
sub _msg {
my ($self, $req) = @_;
my $version = exists $req->{version} ? $req->{version} : 0;
my $data = exists $req->{data} ? $req->{data} : '';
my $payload = length $data;
my $type =
exists $req->{type} ? $req->{type} : OWNET_MSG_READ; # default to read
my $sg = exists $req->{sg} ? $req->{sg} : OWNET_DEFAULT_FLAGS;
my $size = exists $req->{size} ? $req->{size} : OWNET_DEFAULT_DATA_SIZE;
my $offset = exists $req->{offset} ? $req->{offset} : 0;
return pack 'N6a*', $version, $payload, $type, $sg, $size, $offset, $data;
}
sub read {
my ($self, $path, $sub) = @_;
$self->_run_cmd({ data => $path.chr(0), type => OWNET_MSG_READ }, $sub);
}
sub write {
my ($self, $path, $value, $sub) = @_;
$self->_run_cmd({ data => $path.chr(0).$value,
size => length $value,
type => OWNET_MSG_WRITE }, $sub);
}
sub dir {
my ($self, $path, $sub) = @_;
$self->_run_cmd({ data => $path."\0", type => OWNET_MSG_DIR, size => 0 },
$sub);
}
sub present {
my ($self, $path, $sub) = @_;
$self->_run_cmd({ data => $path."\0", type => OWNET_MSG_PRESENT }, $sub);
}
sub dirall {
( run in 1.023 second using v1.01-cache-2.11-cpan-75ffa21a3d4 )