final versions of Route caching functions
authorDirk Koopman <djk@tobit.co.uk>
Sat, 1 Jan 2022 20:18:27 +0000 (20:18 +0000)
committerDirk Koopman <djk@tobit.co.uk>
Sat, 1 Jan 2022 20:18:27 +0000 (20:18 +0000)
perl/DXCommandmode.pm
perl/Route/Node.pm
perl/Route/User.pm
perl/Spot.pm

index a2d59a5884d0a9e3416178a1f4ac91f4d2f814b2..4091d9e4181df81a6d79527942f19f54f69d4847 100644 (file)
@@ -1009,8 +1009,9 @@ sub format_dx_spot
        my ($slot1, $slot2) = ('', '');
        
        my $clth = 30 + $self->{width} - 80;    # allow comment to grow according the screen width 
-       my $comment = substr (($_[3] || ''), 0, $clth);
-       $comment =~ s/\t/ /g;
+       my $c = $_[3];
+       $c =~ s/\t/ /g;
+       my $comment = substr (($c || ''), 0, $clth);
        $comment .= ' ' x ($clth - (length($comment)));
        
     if (!$slot1 && $self->{user}->wantgrid) {
index 90f691e44e343e47c27de6d3868649d9d3f8f683..4aa8be9ead142bdee079e45a11150d9f29a95d07 100644 (file)
@@ -400,23 +400,31 @@ sub TO_JSON { return { %{ shift() } }; }
 sub write_cache
 {
        my $json = DXJSON->new;
-       $json->canonical(0)->allow_blessed(1)->convert_blessed(1);
-       
+       $json->canonical(isdbg('routecache'));
+
        my $ta = [ gettimeofday ];
-       $json->indent(1)->canonical(1) if isdbg('routecache');
-       my $s = eval {$json->encode(\%list)};
-       if ($s) {
+       my @s;
+       eval {
+               while (my ($k, $v) = each  %list) {
+                   push @s, "$k:" . $json->encode($v) . "\n";
+           }
+       };
+       if (!$@ && @s) {
                my $fh = IO::File->new(">$cachefn") or confess("writing $cachefn $!");
-               $fh->print($s);
+               if (isdbg("routecache")) {
+                       $fh->print(sort @s);
+               }
+               else {
+                       $fh->print(@s);
+               }
                $fh->close;
        } else {
-               dbg("Route::User:Write_cache error '$@'");
+               dbg("Route::Node:Write_cache error '$@'");
                return;
        }
        $json->indent(0)->canonical(0);
        my $diff = _diffms($ta);
-       my $size = sprintf('%.3fKB', (length($s) / 1000));
-       dbg("Route::User:WRITE_CACHE size: $size time to write: $diff mS");
+       dbg("Route::Node:WRITE_CACHE time to write: $diff mS");
 }
 
 
index 51d14f21382951ed14b422dc43c2521678f6f16c..bbd289d292755a0bf89cf3041b0d152d68f21bcf 100644 (file)
@@ -103,23 +103,30 @@ sub TO_JSON { return { %{ shift() } }; }
 sub write_cache
 {
        my $json = DXJSON->new;
-       $json->canonical(0)->allow_blessed(1)->convert_blessed(1);
+       $json->canonical(isdbg('routecache'));
        
        my $ta = [ gettimeofday ];
-       $json->indent(1)->canonical(1) if isdbg('routecache');
-       my $s = eval {$json->encode(\%list)};
-       if ($s) {
+       my @s;
+       eval {
+               while (my ($k, $v) = each  %list) {
+                   push @s, "$k:" . $json->encode($v) . "\n";
+           }
+       };
+       if (!$@ && @s) {
                my $fh = IO::File->new(">$cachefn") or confess("writing $cachefn $!");
-               $fh->print($s);
+               if (isdbg("routecache")) {
+                       $fh->print(sort @s);
+               }
+               else {
+                       $fh->print(@s);
+               }
                $fh->close;
        } else {
                dbg("Route::User:Write_cache error '$@'");
                return;
        }
-       $json->indent(0)->canonical(0);
        my $diff = _diffms($ta);
-       my $size = sprintf('%.3fKB', (length($s) / 1000));
-       dbg("Route::User:WRITE_CACHE size: $size time to write: $diff mS");
+       dbg("Route::User:WRITE_CACHE time to write: $diff mS");
 }
 
 #
index 852a3bda04d9145cb406c799bdc78c3d4b264650..89fdec5b8460dc7b1465d382f144d73b54a51600 100644 (file)
@@ -238,10 +238,9 @@ sub prepare
        # remove ssids and /xxx if present on spotter
        $out[4] =~ s/-\d+$//o;
 
-       # remove leading and trailing spaces
+       # remove leading and trailing spaces from comment field
        $out[3] = unpad($out[3]);
        
-       
        # add the 'dxcc' country on the end for both spotted and spotter, then the cluster call
        my @spd = Prefix::cty_data($out[1]);
        push @out, $spd[0];