projects
/
spider.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
remove redundant issue file
[spider.git]
/
perl
/
Route.pm
diff --git
a/perl/Route.pm
b/perl/Route.pm
index 6a4f96f60c6f9101e7dd6cae66f0b8d42b7ce1ee..7112734f0741a756a2585bab4f91f84f64e98a4d 100644
(file)
--- a/
perl/Route.pm
+++ b/
perl/Route.pm
@@
-23,7
+23,7
@@
use strict;
use vars qw($VERSION $BRANCH);
$VERSION = sprintf( "%d.%03d", q$Revision$ =~ /(\d+)\.(\d+)/ );
use vars qw($VERSION $BRANCH);
$VERSION = sprintf( "%d.%03d", q$Revision$ =~ /(\d+)\.(\d+)/ );
-$BRANCH = sprintf( "%d.%03d", q$Revision$ =~ /\d+\.\d+\.(\d+)\.(\d+)/
) || 0
;
+$BRANCH = sprintf( "%d.%03d", q$Revision$ =~ /\d+\.\d+\.(\d+)\.(\d+)/
|| (0,0))
;
$main::build += $VERSION;
$main::branch += $BRANCH;
$main::build += $VERSION;
$main::branch += $BRANCH;
@@
-40,13
+40,13
@@
use vars qw(%list %valid $filterdef);
$filterdef = bless ([
# tag, sort, field, priv, special parser
['channel', 'c', 0],
$filterdef = bless ([
# tag, sort, field, priv, special parser
['channel', 'c', 0],
- ['channel_dxcc', 'n', 1],
- ['channel_itu', 'n', 2],
- ['channel_zone', 'n', 3],
+ ['channel_dxcc', 'n
c
', 1],
+ ['channel_itu', 'n
i
', 2],
+ ['channel_zone', 'n
z
', 3],
['call', 'c', 4],
['call', 'c', 4],
- ['call_dxcc', 'n', 5],
- ['call_itu', 'n', 6],
- ['call_zone', 'n', 7],
+ ['call_dxcc', 'n
c
', 5],
+ ['call_itu', 'n
i
', 6],
+ ['call_zone', 'n
z
', 7],
], 'Filter::Cmd');
], 'Filter::Cmd');
@@
-92,28
+92,41
@@
sub _addlist
{
my $self = shift;
my $field = shift;
{
my $self = shift;
my $field = shift;
+ my @out;
foreach my $c (@_) {
foreach my $c (@_) {
- my $call = _getcall($c);
- unless (grep {$_ eq $call} @{$self->{$field}}) {
+ confess "Need a ref here" unless ref($c);
+
+ my $call = $c->{call};
+ unless (grep $_ eq $call, @{$self->{$field}}) {
push @{$self->{$field}}, $call;
dbg(ref($self) . " adding $call to " . $self->{call} . "->\{$field\}") if isdbg('routelow');
push @{$self->{$field}}, $call;
dbg(ref($self) . " adding $call to " . $self->{call} . "->\{$field\}") if isdbg('routelow');
+ push @out, $c;
}
}
}
}
- return
$self->{$field}
;
+ return
@out
;
}
sub _dellist
{
my $self = shift;
my $field = shift;
}
sub _dellist
{
my $self = shift;
my $field = shift;
+ my @out;
foreach my $c (@_) {
foreach my $c (@_) {
- my $call = _getcall($c);
- if (grep {$_ eq $call} @{$self->{$field}}) {
+ confess "Need a ref here" unless ref($c);
+ my $call = $c->{call};
+ if (grep $_ eq $call, @{$self->{$field}}) {
$self->{$field} = [ grep {$_ ne $call} @{$self->{$field}} ];
dbg(ref($self) . " deleting $call from " . $self->{call} . "->\{$field\}") if isdbg('routelow');
$self->{$field} = [ grep {$_ ne $call} @{$self->{$field}} ];
dbg(ref($self) . " deleting $call from " . $self->{call} . "->\{$field\}") if isdbg('routelow');
+ push @out, $c;
}
}
}
}
- return $self->{$field};
+ return @out;
+}
+
+sub is_empty
+{
+ my $self = shift;
+ return @{$self->{$_[0]}} == 0;
}
#
}
#
@@
-261,6
+274,7
@@
sub alldxchan
my $self = shift;
my @dxchan;
# dbg("Trying node $self->{call}") if isdbg('routech');
my $self = shift;
my @dxchan;
# dbg("Trying node $self->{call}") if isdbg('routech');
+
my $dxchan = DXChannel->get($self->{call});
push @dxchan, $dxchan if $dxchan;
my $dxchan = DXChannel->get($self->{call});
push @dxchan, $dxchan if $dxchan;
@@
-288,12
+302,16
@@
sub alldxchan
sub dxchan
{
my $self = shift;
sub dxchan
{
my $self = shift;
+
+ # ALWAYS return the locally connected channel if present;
+ my $dxchan = DXChannel->get($self->call);
+ return $dxchan if $dxchan;
+
my @dxchan = $self->alldxchan;
return undef unless @dxchan;
# determine the minimum ping channel
my $minping = 99999999;
my @dxchan = $self->alldxchan;
return undef unless @dxchan;
# determine the minimum ping channel
my $minping = 99999999;
- my $dxchan;
foreach my $dxc (@dxchan) {
my $p = $dxc->pingave;
if (defined $p && $p < $minping) {
foreach my $dxc (@dxchan) {
my $p = $dxc->pingave;
if (defined $p && $p < $minping) {
@@
-305,6
+323,8
@@
sub dxchan
return $dxchan;
}
return $dxchan;
}
+
+
#
# track destruction
#
#
# track destruction
#