fix deletions on pc92 config (finally)?
[spider.git] / perl / Route / Node.pm
index bde0a74476ac51819a4a27817d43db39ab41a852..10a45eaef7a8da949af57e550a550392bfc58ab7 100644 (file)
@@ -18,7 +18,7 @@ use strict;
 use vars qw($VERSION $BRANCH);
 ($VERSION, $BRANCH) = dxver( q$Revision$);
 
-use vars qw(%list %valid @ISA $max $filterdef);
+use vars qw(%list %valid @ISA $max $filterdef $obscount);
 @ISA = qw(Route);
 
 %valid = (
@@ -31,11 +31,14 @@ use vars qw(%list %valid @ISA $max $filterdef);
                  lastmsg => '0,Last Route Msg,atime',
                  lastid => '0,Last Route MsgID',
                  do_pc92 => '0,Uses pc92,yesno',
+                 via_pc92 => '0,Came in via pc92,yesno',
+                 obscount => '0,Obscount',
 );
 
 $filterdef = $Route::filterdef;
 %list = ();
 $max = 0;
+$obscount = 3;
 
 sub count
 {
@@ -221,11 +224,25 @@ sub calc_config_changes
        my %users = map {$_ => 1} @{$self->{users}};
        my $cnodes = shift;
        my $cusers = shift;
+       if (isdbg('route')) {
+               dbg("ROUTE: start calc_config_changes");
+               dbg("ROUTE: incoming nodes on $self->{call}: " . join(',', sort @$cnodes));
+               dbg("ROUTE: incoming users on $self->{call}: " . join(',', sort @$cusers));
+               dbg("ROUTE: existing nodes on $self->{call}: " . join(',', sort keys %nodes));
+               dbg("ROUTE: existing users on $self->{call}: " . join(',', sort keys %users));
+       }
        my (@dnodes, @dusers, @nnodes, @nusers);
        push @nnodes, map {my @r = $nodes{$_} ? () : $_; delete $nodes{$_}; @r} @$cnodes;
        push @dnodes, keys %nodes;
        push @nusers, map {my @r = $users{$_} ? () : $_; delete $users{$_}; @r} @$cusers;
        push @dusers, keys %users;
+       if (isdbg('route')) {
+               dbg("ROUTE: deleted nodes on $self->{call}: " . join(',', sort @dnodes));
+               dbg("ROUTE: deleted users on $self->{call}: " . join(',', sort @dusers));
+               dbg("ROUTE: added nodes on $self->{call}: " . join(',', sort  @nnodes));
+               dbg("ROUTE: added users on $self->{call}: " . join(',', sort @nusers));
+               dbg("ROUTE: end calc_config_changes");
+       }
        return (\@dnodes, \@dusers, \@nnodes, \@nusers);
 }
 
@@ -238,11 +255,12 @@ sub new
        
        my $self = $pkg->SUPER::new($call);
        $self->{parent} = ref $pkg ? [ $pkg->{call} ] : [ ];
-       $self->{version} = shift || 5000;
+       $self->{version} = shift || 5401;
        $self->{flags} = shift || Route::here(1);
        $self->{users} = [];
        $self->{nodes} = [];
        $self->{lastid} = {};
+       $self->reset_obs;                       # by definition
        
        $list{$call} = $self;
        
@@ -301,6 +319,19 @@ sub _deluser
     return $self->_dellist('users', @_);
 }
 
+sub dec_obs
+{
+       my $self = shift;
+       $self->{obscount}--;
+       return $self->{obscount};
+}
+
+sub reset_obs
+{
+       my $self = shift;
+       $self->{obscount} = $obscount;
+}
+
 sub DESTROY
 {
        my $self = shift;