Prepare for git repository
[spider.git] / perl / DXDb.pm
index e399545d0616798c6cd832276d16b6c6c80a659f..81d21928334ea81e15848eed639f58b3225cb062 100644 (file)
@@ -49,12 +49,6 @@ $lastprocesstime = time;
 $nextstream = 0;
 %stream = ();
 
-use vars qw($VERSION $BRANCH);
-$VERSION = sprintf( "%d.%03d", q$Revision$ =~ /(\d+)\.(\d+)/ );
-$BRANCH = sprintf( "%d.%03d", q$Revision$ =~ /\d+\.\d+\.(\d+)\.(\d+)/  || (0,0));
-$main::build += $VERSION;
-$main::branch += $BRANCH;
-
 # allocate a new stream for this request
 sub newstream
 {
@@ -156,6 +150,10 @@ sub getkey
        my $key = uc shift;
        my $value;
 
+       # massage the key
+       $key =~ s/[\@\$\&\%\*]+//g;
+       $key =~ s/^[\.\/]+//g;
+       
        # make sure we are open
        $self->open;
        if ($self->{localcmd}) {
@@ -240,81 +238,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 $db = getdesc($f[4]);
-                       if ($db) {
-                               if ($db->{remote}) {
-                                       sendremote($dxchan, $f[2], $f[3], $dxchan->msg('db1', $db->{remote}));
-                               } else {
-                                       my $value = $db->getkey($f[5]);
-                                       if ($value) {
-                                               my @out = split /\n/, $value;
-                                               sendremote($dxchan, $f[2], $f[3], @out);
-                                       } else {
-                                               sendremote($dxchan, $f[2], $f[3], $dxchan->msg('db2', $f[5], $db->{name}));
-                                       }
-                               }
-                       } else {
-                               sendremote($dxchan, $f[2], $f[3], $dxchan->msg('db3', $f[4]));
-                       }
-                       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