started OOing of PC protocol stuff
[spider.git] / perl / PC.pm
diff --git a/perl/PC.pm b/perl/PC.pm
new file mode 100644 (file)
index 0000000..7ec71e5
--- /dev/null
@@ -0,0 +1,47 @@
+#
+# OO version of all the PC protocol stuff
+#
+# Here is done all reception, validation and generation of PC
+# protocol frames
+#
+# This uses the Prot class as a basis for all 
+# protocol entities
+#
+
+package PC10;
+
+@ISA = qw(Prot);
+use DXUtil;
+
+use strict;
+
+sub new
+{
+       my $pkg = shift;
+       my $self = SUPER->new($pkg);
+       $self->{from} = shift;
+       $self->{to} = shift;     # is TO if {to} is blank
+       $self->{text} = shift;
+    $self->{flag} = shift;
+    my $auxto = shift;
+    $self->{origin} = shift;
+
+       # sort out the to/via dillema and do some validation
+       if (is_callsign($auxto)) {
+               $self->{via} = $self->{to};
+               $self->{to} = $auxto;
+               return undef unless is_callsign($self->{via});
+       }
+       return undef unless is_callsign($self->{from}) && is_callsign($self->{to}) && is_callsign($self->{origin}) && is_pctext($self->{text}) && is_pcflag($self->{flag});
+       return $self;
+}
+
+sub out {
+       my $self = shift;
+       my $addra = $self->{via} || $self->{to};
+    my $addrb = exists $self->{via} ? $self->{to} : ' ';
+       return "PC10^$self->{from}^$addra^$self->{text}^$self->{flag}^$addrb^$self->{origin}^~";
+}
+
+1;
+__END__