X-Git-Url: http://gb7djk.dxcluster.net/gitweb/gitweb.cgi?a=blobdiff_plain;f=perl%2FDXCommandmode.pm;h=e86abd1a4f76c3f35a7150b7a0a72550e7d4a658;hb=a6330fe1d9692dcd17c42a51b1c313187330cc9a;hp=403dd134072841269777a6eda12e8f01d5561559;hpb=a9bc2c5a87691ca5bed6e408c5908695bd65387a;p=spider.git diff --git a/perl/DXCommandmode.pm b/perl/DXCommandmode.pm index 403dd134..e86abd1a 100644 --- a/perl/DXCommandmode.pm +++ b/perl/DXCommandmode.pm @@ -37,6 +37,7 @@ use DB_File; use VE7CC; use DXXml; use AsyncMsg; +use JSON; use Mojo::IOLoop; use Mojo::IOLoop::ForkCall; @@ -1252,9 +1253,13 @@ sub send_motd # Punt off a long running command into a separate process # -# Hhis is called from commands to run some potentially long running +# This is called from commands to run some potentially long running # function. The process forks and then runs the function and returns # the result back to the cmd. +# +# NOTE: this merely forks the current process and then runs the cmd in that (current) context. +# IT DOES NOT START UP SOME NEW PROGRAM AND RELIES ON THE FACT THAT IT IS RUNNING DXSPIDER +# THE CURRENT CONTEXT!! # # call: $self->spawn_cmd(\, [cb => sub{...}], [prefix => "cmd> "], [progress => 0|1], [args => [...]]); sub spawn_cmd @@ -1273,6 +1278,8 @@ sub spawn_cmd no strict 'refs'; my $fc = Mojo::IOLoop::ForkCall->new; + $fc->serializer(\&encode_json); + $fc->deserializer(\&decode_json); $fc->run( sub {my @args = @_; my @res = $cmdref->(@args); return @res}, $args,