Agent
view release on metacpan or search on metacpan
Agent/Transport/TCP.pm view on Meta::CPAN
unless ($addr = $args{Address}) {
warn "No valid transport address defined: $args{Address}!";
return;
}
my @msg = @{$args{Message}};
# open a new socket & send the data
my $con = new IO::Socket::INET(
Proto => 'tcp',
Timeout => 1,
PeerAddr => $addr,
Reuse => 1
) or return (); # use IO::Socket's $!
for( @msg ) { $con->send( $_ ) or return (); }
# preserve connection?
${$args{KeepAlive}} = $con if (ref $args{KeepAlive} eq 'SCALAR');
$con->close();
Agent/Transport/TCP.pm view on Meta::CPAN
my ($self, %args) = @_;
my $remote = $self->accept(%args) or return ();
return $remote->getlines();
}
sub accept {
my ($self, %args) = @_;
$self->{Server}->timeout($args{Timeout}) if $args{Timeout};
my $remote = $self->{Server}->accept() or return;
$remote->autoflush();
my $from = $remote->peerhost . ':' . $remote->peerport;
print "Connection from $from\n" if $Debug;
# does the caller want to keep the 'from' variable?
${$args{From}} = $from if (ref $args{From} eq 'SCALAR');
return $remote;
}
examples/Loop.pa view on Meta::CPAN
print "Initiating loop...\n";
$msg->add_dest( 'TCP', $self->{Tell} ) or die "Error: $!\n";
unless ($msg->send) {
print "Couldn't send message!\n";
return;
}
}
while (1) { # loop till user/remote breaks
my @incoming = $tcp->recv(
Timeout => 120
) or die "Error: $!\n";
chop (my $remote = $incoming[0]);
print "got message from $remote.\n" if $self->{verbose};
$msg->add_dest( 'TCP', $remote) or die "Error: $!\n";
unless ($msg->send) {
print "Remote end stopped receiving\n";
return;
}
}
}
examples/Static.pa view on Meta::CPAN
print "Shuting down Static agent.\n";
}
##
# getmsg - internal. Waits for a incoming message, & returns it.
sub getmsg {
my ($self, $trans) = @_; # all agents & subs are oo
my $rmt = 'hi there!';
my ($from, @incoming) = $trans->recv( Timeout => 120, From => \$rmt) or return;
chomp $from;
unless (@incoming) {
warn "No data in message from $rmt!\n";
return;
}
my ($d, $addr, $med) = split(/\s+/, $from);
my @t = localtime(time);
my $time = "$t[2]\:$t[1]\:$t[0] $t[5]\-$t[4]\-$t[3]";
print "Message recv'd from '$from' ($rmt) at $time\n" if $self->{verbose};
examples/dcalc.pl view on Meta::CPAN
# and send the agent:
my $agent = new Agent(%args) or die "couldn't create agent! $!";
$agent->run();
print "\t$host calculating '$args{Eval}'\n" if $args{verbose};
}
my $i = 1;
WHILE: while (1) {
print "Waiting for response #$i...\n";
my $rmt;
my @msg = $tcp->recv( Timeout => 120, From => \$rmt) or die "Timeout reached!\n";
print "Connection from: $rmt\n" if $args{verbose};
unless (@msg) {
warn "No data in message!\n";
next;
}
$i++;
($key, $val) = split (/=/, @msg[0]); # result should be in 1st line
print "setting $key => $val\n" if $args{verbose};
$hosts{$key} = $val;
foreach (keys(%hosts)) {
examples/keepalive.pl view on Meta::CPAN
$addr = $tcp->address();
print "Got tcp address $addr.\n";
unless ($pid=fork()) {
# child
print "forked. parent is $$.\n";
my $serv;
sleep 1; # give time for server to setup...
my $con = new IO::Socket::INET(
Proto => 'tcp',
Timeout => 10,
PeerAddr => $addr,
Reuse => 1
) or die "C: Ack! $!";
$con->autoflush();
print "C: made it! ", ref( $con ), "\n";
print $con "Hello There!\n";
print "C: ", <$con>, "finished printing, exiting.\n";;
exit 0;
}
( run in 0.265 second using v1.01-cache-2.11-cpan-4d50c553e7e )