+
+ # this is where we decide to delay PC11s in the hope that a PC61 will be along soon.
+
+ my $key = join '|', @spot[0..2,4,7]; # not including text
+
+ unless ($recurse) {
+ if ($pcno == 61) {
+ if (Spot::dup_find(@spot[0..4,7])) {
+ dbg("DUPE $pc->[0] $self->{call} -> key: $key dumped") if isdbg('pc11');
+ return;
+ } else {
+ ++$pc61_rx;
+ }
+
+ if ($pc11_saved{$key}) {
+ ++$pc11_to_61;
+ my $percent = $pc11_rx ? $pc11_to_61 * 100 / $pc11_rx : 0;
+ dbg(sprintf("PROMOTED BETTER $self->{call} -> $pc->[0] $key, using PC61, saved PC11 DUMPED: $pc61_rx pc11: $pc11_rx better pc61: $pc11_to_61 (%0.1f%%)", $percent)) if isdbg("pc11");
+ delete $pc11_saved{$key};
+ }
+ }
+ if ($pcno == 11) {
+
+ if (Spot::dup_find(@spot[0..4,7])) {
+ dbg("DUPE $pc->[0] $self->{call} -> key: $key dumped") if isdbg('pc11');
+ return;
+ } else {
+ ++$pc11_rx;
+ }
+
+ if ($pc11_saved{$key}) {
+ dbg("DUPE $pc->[0] $self->{call } key: is saved, ignored") if isdbg("pc11");
+ return; # because it's a dup
+ }
+
+ # can we promote this to a PC61?
+ my $r = Route::User::get($spot[4]); # find spotter
+ if ($r && $r->ip) { # do we have an ip addres
+ $pcno = 61;
+ $pc->[0] = 'PC61';
+ $pc->[7] = $spot[14] = $r->ip;
+ ++$rpc11_to_61;
+ my $percent = $pc11_rx ? $rpc11_to_61 * 100 / $pc11_rx : 0;
+ dbg(sprintf("PROMOTED ROUTE $self->{call} -> PC11 $key PROMOTED to PC61 with IP $spot[14] pc61: $pc61_rx pc11: $pc11_rx route->pc61 $rpc11_to_61 (%0.1f%%)", $percent)) if isdbg("pc11");
+ delete $pc11_saved{$key};
+ }
+
+ # if it is STILL (despite all efforts to change it) a PC11
+ # save it and wait - it will be called from pc11_process
+ if ($pcno == 11) {
+ $pc11_saved{$key} = [$main::systime, $self, $pcno, $line, $origin, $pc];
+ dbg("SAVED $self->{call} -> NEW $pc->[0] spot $key waiting for a better offer") if isdbg("pc11");
+ return;
+ }
+ }
+ }
+
+ my $count = $pc11_to_61+$rpc11_to_61;
+ my $percent = $pc11_rx ? $count*100 / $pc11_rx : 0;
+ my $pc11_61 = $pc61_rx ? $pc11_rx*100 / $pc61_rx : 0;
+ dbg(sprintf("PASSED $self->{call} -> $pc->[0] spot $key, pc11: $pc11_rx pc61: $pc61_rx PC11/PC61 ratio: %0.1f%% total pc11->pc61: $count (%0.1f%%) ", $pc11_61, $percent)) if isdbg("pc11");
+
+