get sh/db0sdx working with mojo
authorDirk Koopman <djk@tobit.co.uk>
Mon, 16 Jun 2014 23:54:02 +0000 (00:54 +0100)
committerDirk Koopman <djk@tobit.co.uk>
Mon, 16 Jun 2014 23:54:02 +0000 (00:54 +0100)
cmd/show/db0sdx.pl
perl/AsyncMsg.pm

index b7574761512fd430a9cad9ded5ed6f9558bafb3a..64c6f3bfdf585534d552a6ffbdb0717c6eabfa30 100644 (file)
@@ -13,20 +13,21 @@ sub on_disc
        my $conn = shift;
        my $dxchan = shift;
        my @out;
+
+#      $DB::single = 1;
        
-       $conn->{sdxin} .= $conn->{msg}; # because there will be stuff left in the rx buffer because it isn't \n terminated
        dbg("db0sdx in: $conn->{sdxin}") if isdbg('db0sdx');
 
        my ($info) = $conn->{sdxin} =~ m|<qslinfoResult>([^<]*)</qslinfoResult>|;
-       dbg("info: $info");
+#      dbg("db0sdx info: $info");
        my $prefix = $conn->{prefix} || '';
        
        my @in = split /[\r\n]/, $info if $info;
        if (@in && $in[0]) {
-               dbg("in qsl");
+#              dbg("db0sdx: in qsl");
                push @out, map {"$prefix$_"} @in;
        } else {
-               dbg("in fault");
+#              dbg("db0sdx: in fault");
                ($info) = $conn->{sdxin} =~ m|<faultstring>([^<]*)</faultstring>|;
                push @out, "$prefix$info" if $info;
                push @out, $dxchan->msg('e3', 'DB0SDX', $conn->{sdxline}) unless @out;          
@@ -39,6 +40,8 @@ sub process
        my $conn = shift;
        my $msg = shift;
 
+#      $DB::single = 1;
+       
        $conn->{sdxin} .= "$msg\n";
        
        dbg("db0sdx in: $conn->{sdxin}") if isdbg('db0sdx');
@@ -69,7 +72,8 @@ sub handle
     </qslinfo>
   </soap:Body>
 </soap:Envelope>);
-       my $lth = length($s)+1;
+#      $s .= "\n";
+       my $lth = length($s);
        
        Log('call', "$call: show/db0sdx $line");
        my $conn = AsyncMsg->post($self, $target, "$path$suffix", prefix => 'sdx> ', filter => \&process,
@@ -81,7 +85,7 @@ sub handle
                                                          on_disc => \&on_disc);
        
        if ($conn) {
-               $conn->{sdxcall} = $line;
+               $conn->{sdxline} = $line;
                push @out, $self->msg('m21', "show/db0sdx");
        } else {
                push @out, $self->msg('e18', 'DB0SDX Database server');
index cb0878762f1ba7f3d60dd5c4b8cd43bf2366100d..b1875d97bb8fa9d5698e30a1f5efcfa547cee159 100644 (file)
@@ -130,6 +130,20 @@ sub _getpost
 #      $tx->on(error => sub { $conn->_error(@_); });
 #      $tx->on(finish => sub { $conn->disconnect; });
 
+       $ua->on(start => sub {
+                               my ($ua, $tx) = @_;
+                               my $data = delete $args{data};
+                               while (my ($k, $v) = each %args) {
+                                       dbg("AsyncMsg: attaching header $k: $v") if isdbg('async');
+                                       $tx->req->headers->header($k => $v);
+                               }
+                               if (defined $data) {
+                                       dbg("AsyncMsg: body ='$data'") if isdbg('async'); 
+                                       $tx->req->body($data);
+                               }
+                       });
+       
+
        $ua->start($tx => sub { $conn->handle_getpost(@_) }); 
 
        
@@ -251,7 +265,7 @@ sub disconnect
                my $dxchan = DXChannel::get($conn->{caller});
                if ($dxchan) {
                        no strict 'refs';
-                       $ondisc->($conn, $dxchan)
+                       $ondisc->($conn, $dxchan);
                }
        }
        delete $conn->{mojo};