X-Git-Url: http://gb7djk.dxcluster.net/gitweb/gitweb.cgi?a=blobdiff_plain;f=perl%2FRouteDB.pm;h=bff21fb4ac96e86c442a9745eaaa925be1d84e6f;hb=cbda6153fad2adddb58ee5a87f3981aa2ad754ad;hp=c9c01ff4544565ea80651a35f78fb0dcd4526622;hpb=611e9ea5204765638eceecbd8e1dd04a4f10a1be;p=spider.git diff --git a/perl/RouteDB.pm b/perl/RouteDB.pm index c9c01ff4..bff21fb4 100644 --- a/perl/RouteDB.pm +++ b/perl/RouteDB.pm @@ -20,18 +20,16 @@ package RouteDB; use DXDebug; use DXChannel; +use DXUtil; use Prefix; use strict; 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; - use vars qw(%list %valid $default); +($VERSION, $BRANCH) = dxver(q$Revision$); + %list = (); $default = 99; # the number of hops to use if we don't know %valid = ( @@ -90,7 +88,7 @@ sub update my $interface = shift; my $hops = shift || $default; my $ref = $list{$call} || RouteDB->new($call); - my $iref = $ref->{item}->{$interface} ||= RouteDB::Item->new($interface); + my $iref = $ref->{item}->{$interface} ||= RouteDB::Item->new($interface, $hops); $iref->{count}++; $iref->{hops} = $hops if $hops < $iref->{hops}; $iref->{t} = shift || $main::systime; @@ -106,6 +104,14 @@ sub delete delete $ref->{item}->{$interface} if $ref; } +sub delete_interface +{ + my $interface = shift; + foreach my $ref (values %list) { + delete $ref->{item}->{$interface}; + } +} + # # generic AUTOLOAD for accessors # @@ -134,7 +140,8 @@ sub new { my $pkg = shift; my $call = shift; - return bless {call => $call, hops => $RouteDB::default}, (ref $pkg || $pkg); + my $hops = shift || $RouteDB::default; + return bless {call => $call, hops => $hops}, (ref $pkg || $pkg); } 1;