X-Git-Url: http://dxcluster.org/gitweb/gitweb.cgi?a=blobdiff_plain;f=perl%2FRoute.pm;h=582434415073033e2ba22aed70c625b2e2c8e3b1;hb=7f8810e2112b1fa4a68472c265a71906e7dcccd3;hp=e0cfe3e549a3ea2c9a50c8e7ad75abae7c4590f0;hpb=4d22d5fd3874e8292d82f84a777b99ff7d10402a;p=spider.git diff --git a/perl/Route.pm b/perl/Route.pm index e0cfe3e5..58243441 100644 --- a/perl/Route.pm +++ b/perl/Route.pm @@ -60,7 +60,9 @@ $filterdef = bless ([ sub new { - my ($pkg, $call) = @_; + my $pkg = shift; + my $call = shift; + $pkg = ref $pkg if ref $pkg; my $self = bless {call => $call}, $pkg; @@ -70,7 +72,7 @@ sub new ($self->{dxcc}, $self->{itu}, $self->{cq}, $self->{state}, $self->{city}) = Prefix::cty_data($call); - $self->{flags} = here(1); + $self->{flags} = 1; return $self; } @@ -128,17 +130,20 @@ sub _dellist return @out; } -sub is_empty +sub _haslist { my $self = shift; - return @{$self->{$_[0]}} == 0; + my $field = shift; + my @out; + my $call = shift; + my $r = grep $_->{call} eq $call, @{$self->{$field}}; + dbg(ref($self) . " $call is " . $r?'in':'NOT in' . " $self->{call}\->\{$field\}") if isdbg('routelow'); } -sub is_aranea +sub is_empty { my $self = shift; - $self->{aranea} = shift if @_; - return $self->{aranea}; + return @{$self->{$_[0]}} == 0; } # @@ -156,21 +161,15 @@ sub is_aranea sub here { my $self = shift; - my $r = shift; - return $self ? 2 : 0 unless ref $self; - return ($self->{flags} & 2) ? 1 : 0 unless defined $r; - $self->{flags} = (($self->{flags} & ~1) | ($r ? 1 : 0)); - return $r ? 1 : 0; + $self->{flags} = shift if @_; + return $self->{flags}; } +# conferencing in the ak1a sense is not supported sub conf { my $self = shift; - my $r = shift; - return $self ? 2 : 0 unless ref $self; - return ($self->{flags} & 1) ? 1 : 0 unless defined $r; - $self->{flags} = (($self->{flags} & ~2) | ($r ? 2 : 0)); - return $r ? 2 : 0; + return 0; } sub parents @@ -211,9 +210,9 @@ sub config $call = ' ' x length $call; # recursion detector - if ((DXChannel->get($self->{call}) && $level > 1) || grep $self->{call} eq $_, @$seen) { + if ((DXChannel::get($self->{call}) && $level > 1) || grep $self->{call} eq $_, @$seen) { $line .= ' ...'; - push @out, $line; +# push @out, $line; return @out; } push @$seen, $self->{call}; @@ -289,7 +288,7 @@ sub alldxchan my @dxchan; # dbg("Trying node $self->{call}") if isdbg('routech'); - my $dxchan = DXChannel->get($self->{call}); + my $dxchan = DXChannel::get($self->{call}); push @dxchan, $dxchan if $dxchan; # it isn't, build up a list of dxchannels and possible ping times @@ -298,7 +297,7 @@ sub alldxchan foreach my $p (@{$self->{parent}}) { # dbg("Trying parent $p") if isdbg('routech'); next if $p eq $main::mycall; # the root - my $dxchan = DXChannel->get($p); + my $dxchan = DXChannel::get($p); if ($dxchan) { push @dxchan, $dxchan unless grep $dxchan == $_, @dxchan; } else { @@ -318,7 +317,7 @@ sub dxchan my $self = shift; # ALWAYS return the locally connected channel if present; - my $dxchan = DXChannel->get($self->call); + my $dxchan = DXChannel::get($self->call); return $dxchan if $dxchan; my @dxchan = $self->alldxchan;