Agent
view release on metacpan or search on metacpan
Agent/Message.pm view on Meta::CPAN
#!/usr/bin/perl
##
# Messaging class to standardize agent communication across multiple
# transport mediums.
# Steve Purkis, <spurkis@engsoc.carleton.ca>
# June 21, 1998
##
package Agent::Message;
use vars qw( $Debug );
#$Debug = 1;
sub new {
my ($class, %args) = @_;
my $self = {};
$self->{Body} = $args{Body};
if ($args{Transport}) {
${$self->{Transport}}{$args{Transport}} = [ $args{Address} ];
if ($args{SendNow}) {
bless $self, $class;
return $self->send;
}
}
bless $self, $class;
}
sub send {
my $self = shift;
my %args = @_;
my %trans = %{$self->{Transport}};
my @return;
foreach $medium (keys(%trans)) {
my @addrs = @{$trans{$medium}};
print "Sending message in $medium.\n" if $Debug;
foreach $address (@addrs) {
push @return, &Agent::Transport::send(
Medium => $medium,
Address => $address,
Message => $self->{Body},
%args
);
}
}
return @return;
}
sub add_dest {
my $self = shift;
my $medium = shift or return;
push (@{${$self->{Transport}}{$medium}}, @_);
}
sub del_dest {
my $self = shift;
my $medium = shift or return;
my %trans = %{$self->{Transport}};
foreach my $addr (@_) {
; # can't be bothered at the moment.
}
}
sub del_transport {
my $self = shift;
my %trans = %{$self->{Transport}};
for (@_) {
delete ${$self->{Transport}}{$_};
}
}
sub body {
my $self = shift;
$self->{Body} = \@_ if @_;
return @{$self->{Body}};
}
sub dump {
my $self = shift;
my %trans = %{$self->{Transport}};
foreach $med (keys(%trans)) {
print "Medium: $med\nAddress(es): ";
my @addrs = @{$trans{$med}};
for (@addrs) { print "$_; "; }
( run in 3.092 seconds using v1.01-cache-2.11-cpan-39bf76dae61 )