X-Git-Url: http://gb7djk.dxcluster.net/gitweb/gitweb.cgi?a=blobdiff_plain;f=perl%2FRouteDB.pm;h=0fe3ac25e863a189d894c97fc1deb639b86984c6;hb=b9dffeff7239952814342dad19db3a51def6fab7;hp=9a63d368f121cc5b896136cf56f96d587caf87a2;hpb=85ea68ecce028876ab0d60d622c1d92c95bb8747;p=spider.git diff --git a/perl/RouteDB.pm b/perl/RouteDB.pm index 9a63d368..0fe3ac25 100644 --- a/perl/RouteDB.pm +++ b/perl/RouteDB.pm @@ -24,19 +24,13 @@ 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); %list = (); $default = 99; # the number of hops to use if we don't know %valid = ( call => "0,Callsign", - items => "0,Interfaces,parray", + item => "0,Interfaces,parray", t => '0,Last Seen,atime', hops => '0,Hops', count => '0,Times Seen', @@ -46,7 +40,7 @@ sub new { my $pkg = shift; my $call = shift; - return bless {call => $call, items => {}}, (ref $pkg || $pkg); + return bless {call => $call, list => {}}, (ref $pkg || $pkg); } # get the best one @@ -76,7 +70,7 @@ sub _sorted } else { $a->{hops} <=> $b->{hops}; } - } values %{$ref->{items}}; + } values %{$ref->{item}}; } @@ -90,11 +84,12 @@ sub update my $interface = shift; my $hops = shift || $default; my $ref = $list{$call} || RouteDB->new($call); - my $iref = $ref->{list}->{$interface} ||= RouteDB::Item->new($call, $interface); + my $iref = $ref->{item}->{$interface} ||= RouteDB::Item->new($interface); $iref->{count}++; $iref->{hops} = $hops if $hops < $iref->{hops}; $iref->{t} = shift || $main::systime; - $ref->{list}->{$interface} ||= $iref; + $ref->{item}->{$interface} ||= $iref; + $list{$call} ||= $ref; } sub delete @@ -102,7 +97,15 @@ sub delete my $call = shift; my $interface = shift; my $ref = $list{$call}; - delete $ref->{list}->{$interface} if $ref; + delete $ref->{item}->{$interface} if $ref; +} + +sub delete_interface +{ + my $interface = shift; + foreach my $ref (values %list) { + delete $ref->{item}->{$interface}; + } } #