BACnet
view release on metacpan or search on metacpan
lib/BACnet/Socket.pm view on Meta::CPAN
if (
defined $self->{reader_of}
{ $addr . ':' . $packet->{payload}{invoke_id} }{on_response} )
{
$self->{reader_of}{ $addr . ':' . $packet->{payload}{invoke_id} }
{on_response}
->( $self->{device}, $packet->{payload}, $port, $ip );
}
my $r = delete $self->{reader_of}
{ $addr . ':' . $packet->{payload}{invoke_id} };
$self->loop->unwatch_time( $r->{timer} );
if ( defined $r->{future} ) {
$r->{future}->done($packet);
}
return;
}
$self->{device}->_react( $packet, $port, $ip );
}
lib/BACnet/Socket.pm view on Meta::CPAN
my $f = $self->loop->new_future;
my $id = $self->loop->watch_time(
after => $args{timeout} // $self->{timeout},
code => sub {
delete $self->{reader_of}{ $addr . ':' . $args{invoke_id} };
$ok = 0;
$f->fail("no response from $ip:$port");
},
);
$self->{reader_of}{ $addr . ':' . $args{invoke_id} } = {
timer => $id,
future => $f,
packet => $packet,
on_response => $args{on_response}
};
return $f->get if ( $f->await->is_done && $ok );
}
$self->_unlock_adr( $lock, $addr . ':' . $args{invoke_id} );
return undef;
( run in 0.586 second using v1.01-cache-2.11-cpan-0d24bc4d141 )