fix xmlout
[spider.git] / perl / Route.pm
index e0cfe3e549a3ea2c9a50c8e7ad75abae7c4590f0..582434415073033e2ba22aed70c625b2e2c8e3b1 100644 (file)
@@ -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;