Add latest RBN chnages and data stats
[spider.git] / cmd / show / data_stats.pl
diff --git a/cmd/show/data_stats.pl b/cmd/show/data_stats.pl
new file mode 100644 (file)
index 0000000..7b37da0
--- /dev/null
@@ -0,0 +1,43 @@
+#
+# show the users on this cluster from the routing tables
+#
+# Copyright (c) 1998 Dirk Koopman G1TLH
+#
+#
+#
+
+sub handle
+{
+       my ($self, $line) = @_;
+       my @list = map { uc } split /\s+/, $line; # list of callsigns of nodes
+       my @out;
+       if ($list[0] eq 'ALL') {
+               shift @list;
+               @list = keys %DXChannel::channels;
+       }
+       push @out, "Data Statitics                 IN                                OUT";
+       push @out, "Callsign             Lines             Data            Lines             Data";
+       push @out, "-----------------------------------------------------------------------------";
+       if (@list) {
+               foreach my $call (sort @list) {
+                       next if $call eq $main::mycall;
+                       my $dxchan = DXChannel::get($call);
+                       if ($dxchan) {
+                               my $conn = $dxchan->conn;
+                               push @out, sprintf("%-9.9s %16s %16s %16s %16s", $call, comma($conn->{linesin}), comma($conn->{datain}), comma($conn->{linesout}), comma($conn->{dataout}));
+                       }
+               }
+       }
+
+       push @out, "-----------------------------------------------------------------------------" if @out > 3;
+       push @out, sprintf("%-9.9s %16s %16s %16s %16s", "TOTALS", comma($Msg::total_lines_in), comma($Msg::total_in), comma($Msg::total_lines_out), comma($Msg::total_out));
+
+       return (1, @out);
+}
+
+sub comma
+{
+       my $num = shift;
+       return scalar reverse(join(",",unpack("(A3)*", reverse int($num))));
+}
+