X-Git-Url: http://gb7djk.dxcluster.net/gitweb/gitweb.cgi?a=blobdiff_plain;f=cmd%2Fshow%2Fwm7d.pl;h=5df379a3e7676db9e0f426ab27d304be9dcd232c;hb=8ce3e54056026253e9e4a518b317dbbd8e71bb7a;hp=e77bed269dfcd7783f3cccd27634752e2fd06074;hpb=89eaa6762e986e15ba3167ba3400a38cda1faf80;p=spider.git diff --git a/cmd/show/wm7d.pl b/cmd/show/wm7d.pl index e77bed26..5df379a3 100644 --- a/cmd/show/wm7d.pl +++ b/cmd/show/wm7d.pl @@ -17,7 +17,10 @@ sub waitfor my $buf = $conn->{msg}; $buf =~ s/\r/\\r/g; $buf =~ s/\n/\\n/g; - dbg "state $conn->{state} '$msg' '$buf'"; + + dbg "state $conn->{state} '$msg' '$buf'" if isdbg('wm7d'); + + $conn->{_wm7d} ||= []; if ($conn->{state} eq 'waitfor') { if ($msg =~ /utc$/ ) { @@ -30,13 +33,23 @@ sub waitfor $conn->{state} = 'ending'; } return if $msg =~ /^query->/; - $conn->handle_raw($msg); + push @{$conn->{_wm7d}}, $msg; } else { return if $msg =~ /^query->/ || $msg =~ /bye/; - $conn->handle_raw($msg); +# $conn->handle_raw($msg); + push @{$conn->{_wm7d}}, $msg; } } +sub on_disc +{ + my $conn = shift; + my $dxchan = shift; + $DB::single = 1; + + $dxchan->send(map {"$conn->{prefix}$_"} @{$conn->{_wm7d}}); +} + # wm7d accepts only single callsign sub handle { @@ -58,7 +71,7 @@ sub handle Log('call', "$call: show/wm7d \U$line"); my $conn = AsyncMsg->raw($self, $target, $port, - handler => \&waitfor, prefix=>'wm7d> '); + handler => \&waitfor, prefix=>'wm7d> ', on_disc =>\&on_disc); if ($conn) { $conn->{state} = 'waitfor'; $conn->{target_call} = $line;