sort out the remote db handling
authorminima <minima>
Wed, 31 Dec 2003 15:53:59 +0000 (15:53 +0000)
committerminima <minima>
Wed, 31 Dec 2003 15:53:59 +0000 (15:53 +0000)
Changes
cmd/dbshow.pl
perl/DXDb.pm
perl/DXProt.pm
perl/Messages

diff --git a/Changes b/Changes
index b964b29deeab3cbd1a709e432999fbc656316746..a34e3c35e2c9e0721191aadd3d2f72c6e3bde521 100644 (file)
--- a/Changes
+++ b/Changes
@@ -1,3 +1,5 @@
+31Dec03=======================================================================
+1. alter remote database handling to 'new standard'.
 30Dec03=======================================================================
 1. updated website to make it clear(er) that it all works under Windows (like
 wot Charlie said...).
index 8d393b98985f2e783245816fa61b88371bf937da..309ce8a51d61cb16d3edcee339097dacc30ffcc1 100644 (file)
@@ -40,12 +40,13 @@ foreach  $n (@db) {
 
                # local databases can chain to remote ones
                my $count;
-               push @out, $db->print('pre');
+               my $pre = $db->print('pre');
+               push @out, $pre if defined $pre;
 #              push @out, "@f";
                for (@f) {
-#                      push @out, $db->name . " $_";
+                       push @out, $db->name . " $_";
                        my $value = $db->getkey($_) || "";
-                       push @out, $db->name . ": $_ :";
+#                      push @out, $db->name . ": $_ :";
                        if ($value) {
                                push @out, split /\n/, $value;
                                $count++;
@@ -54,7 +55,8 @@ foreach  $n (@db) {
                        }
                }
                if ($count) {
-                       push @out, $db->print('post');
+                       my $post = $db->print('post');
+                       push @out, $post if $post;
 #                      last;
                }
        }
index 9251bdfdaa8ed084567b54522caba2b35dedba65..2122234bf8fe9d8c8a6025d73707a3e49d698ab9 100644 (file)
@@ -240,67 +240,58 @@ sub normal
 #
 sub process
 {
-       my ($dxchan, $line) = @_;
-
-       # this is periodic processing
-       if (!$dxchan || !$line) {
-               if ($main::systime - $lastprocesstime >= 60) {
-                       if (%avail) {
-                               for (values %avail) {
-                                       if ($main::systime - $_->{accesst} > $opentime) {
-                                               $_->close;
-                                       }
+       if ($main::systime - $lastprocesstime >= 60) {
+               if (%avail) {
+                       for (values %avail) {
+                               if ($main::systime - $_->{accesst} > $opentime) {
+                                       $_->close;
                                }
                        }
-                       $lastprocesstime = $main::systime;
                }
-               return;
+               $lastprocesstime = $main::systime;
        }
+}
 
-       my @f = split /\^/, $line;
-       my ($pcno) = $f[0] =~ /^PC(\d\d)/; # just get the number
+sub handle_37
+{              
 
-       # route out ones that are not for us
-       if ($f[1] eq $main::mycall) {
-               ;
-       } else {
-               $dxchan->route($f[1], $line);
-               return;
-       }
+}
 
- SWITCH: {
-               if ($pcno == 37) {              # probably obsolete
-                       last SWITCH;
-               }
+sub handle_44
+{      
+       my $self = shift;
 
-               if ($pcno == 44) {              # incoming DB Request
-                       my @in = DXCommandmode::run_cmd($dxchan, "dbshow $f[4] $f[5]");
-                       sendremote($dxchan, $f[2], $f[3], @in);
-                       last SWITCH;
-               }
+       # incoming DB Request
+       my @in = DXCommandmode::run_cmd($self, "dbshow $_[4] $_[5]");
+       sendremote($self, $_[2], $_[3], @in);
+}
 
-               if ($pcno == 45) {              # incoming DB Information
-                       my $n = getstream($f[3]);
-                       if ($n) {
-                               my $mchan = DXChannel->get($n->{call});
-                               $mchan->send($f[2] . ":$f[4]") if $mchan;
-                       }
-                       last SWITCH;
-               }
+sub handle_45
+{              
+       my $self = shift;
 
-               if ($pcno == 46) {              # incoming DB Complete
-                       delstream($f[3]);
-                       last SWITCH;
-               }
+       # incoming DB Information
+       my $n = getstream($_[3]);
+       if ($n) {
+               my $mchan = DXChannel->get($n->{call});
+               $mchan->send($_[2] . ":$_[4]") if $mchan;
+       }
+}
 
-               if ($pcno == 47) {              # incoming DB Update request
-                       last SWITCH;
-               }
+sub handle_46
+{              
+       my $self = shift;
 
-               if ($pcno == 48) {              # incoming DB Update request 
-                       last SWITCH;
-               }
-       }       
+       # incoming DB Complete
+       delstream($_[3]);
+}
+
+sub handle_47
+{
+}
+
+sub handle_48
+{
 }
 
 # send back a trache of data to the remote
index b0fdd2d9114e49f9338e9a18a999b56ccf4a6ae8..8f46826a60c9ee93498320e2cb1e31a9769255ab 100644 (file)
@@ -1372,7 +1372,13 @@ sub handle_37
        my $pcno = shift;
        my $line = shift;
        my $origin = shift;
-       DXDb::process($self, $line);
+       if ($_[1] eq $main::mycall) {
+               no strict 'refs';
+               my $sub = "DXDb::handle_$pcno";
+               &$sub($self, @_);
+       } else {
+               $self->route($_[1], $line) unless $self->is_clx;
+       }
 }
 
 # node connected list from neighbour
index d48c7d9a7509591d20f94abc37ade6ac624e4b79..6233bfe18e0d7a565685bea3e909bce8ca2739da 100644 (file)
@@ -318,6 +318,8 @@ package DXM;
                                wpc16u => 'Allow PC16 from $_[0] disabled',
                                wpc19s => 'Route PC19 for $_[0] enabled',
                                wpc19u => 'Route PC19 for $_[0] disabled',
+                               wpc90s => 'PC90 for $_[0] enabled',
+                               wpc90u => 'PC90 for $_[0] disabled',
                                wwv1 => '$_[0] is missing or out of range',
                                wwv2 => 'Duplicate WWV',
                                wwv3 => 'Date        Hour   SFI   A   K Forecast                               Logger',