NAME
Reflex::UdpPeer - Base class for UDP networking peers.
VERSION
version 0.004
SYNOPSIS
Inherit it.
{
package Reflex::UdpPeer::Echo;
use Moose;
extends 'Reflex::UdpPeer';
sub on_udppeer_datagram {
my ($self, $args) = @_;
my $data = $args->{datagram};
if ($data =~ /^\s*shutdown\s*$/) {
$self->destruct();
return;
}
$self->send(
datagram => $data,
remote_addr => $args->{remote_addr},
);
}
sub on_udppeer_error {
my ($self, $args) = @_;
warn "$args->{op} error $args->{errnum}: $args->{errstr}";
$self->destruct();
}
}
Use it as a helper.
{
package Reflex::UdpPeer::Echo;
use Moose;
extends 'Reflex::Object';
use Reflex::UdpPeer;
has port => (
isa => 'Int',
is => 'ro',
);
has peer => (
isa => 'Reflex::UdpPeer|Undef',
is => 'rw',
traits => ['Reflex::Trait::Observer'],
setup => sub {
my $self = shift;
Reflex::UdpPeer->new(port => $self->port());
},
);
sub on_peer_datagram {
my ($self, $args) = @_;
my $data = $args->{datagram};
if ($data =~ /^\s*shutdown\s*$/) {
$self->peer(undef);
return;
}
$self->peer()->send(
datagram => $data,
remote_addr => $args->{remote_addr},
);
}
sub on_peer_error {
my ($self, $args) = @_;
warn "$args->{op} error $args->{errnum}: $args->{errstr}";
$self->peer(undef);
}
}
Compose objects with its base role. See Reflex::Role::UdpPeer.
DESCRIPTION
Reflex::UdpPeer is a base class for UDP network peers.
TODO - Complete the documentation.
SEE ALSO
Reflex "ACKNOWLEDGEMENTS" in Reflex "ASSISTANCE" in Reflex "AUTHORS" in Reflex "BUGS" in Reflex "BUGS" in Reflex "CONTRIBUTORS" in Reflex "COPYRIGHT" in Reflex "LICENSE" in Reflex "TODO" in Reflex