From 5a06cd7853e8bff86a0f17854c0791bb3f85c395 Mon Sep 17 00:00:00 2001 From: minima Date: Wed, 31 Dec 2003 15:53:59 +0000 Subject: [PATCH] sort out the remote db handling --- Changes | 2 ++ cmd/dbshow.pl | 10 +++--- perl/DXDb.pm | 89 +++++++++++++++++++++++--------------------------- perl/DXProt.pm | 8 ++++- perl/Messages | 2 ++ 5 files changed, 57 insertions(+), 54 deletions(-) diff --git a/Changes b/Changes index b964b29d..a34e3c35 100644 --- 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...). diff --git a/cmd/dbshow.pl b/cmd/dbshow.pl index 8d393b98..309ce8a5 100644 --- a/cmd/dbshow.pl +++ b/cmd/dbshow.pl @@ -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; } } diff --git a/perl/DXDb.pm b/perl/DXDb.pm index 9251bdfd..2122234b 100644 --- a/perl/DXDb.pm +++ b/perl/DXDb.pm @@ -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 diff --git a/perl/DXProt.pm b/perl/DXProt.pm index b0fdd2d9..8f46826a 100644 --- a/perl/DXProt.pm +++ b/perl/DXProt.pm @@ -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 diff --git a/perl/Messages b/perl/Messages index d48c7d9a..6233bfe1 100644 --- a/perl/Messages +++ b/perl/Messages @@ -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', -- 2.34.1