use DXUtil;
use DXDebug;
+use DXLog;
use Mojo::IOLoop;
use Mojo::IOLoop::Subprocess;
use JSON;
{
my $pkg = shift;
my $class = ref $pkg || __PACKAGE__;
- my $ref = Mojo::IOLoop::Subprocess->new->serialize(\&encode_json)->deserialize(\&decode_json);
+ my $ref = Mojo::IOLoop::Subprocess->new->serialize(\&freeze)->deserialize(\&thaw);
return bless $ref, $class;
}
+
+sub freeze
+{
+ my $r;
+ my $j = shift;
+ unless ($j) {
+ LogDbg('DXUser', "DXSubcommand::freeze: undefined or empty input");
+ return q{[null, ""]};
+ }
+
+ eval { $r = encode_json($j) };
+ if ($@) {
+ my $dd = dd($j);
+ LogDbg('DXUser', "DXSubcommand::freeze: json error on '$dd': $@");
+ $r = qq{['$@','']};
+ }
+ return $r;
+}
+
+sub thaw
+{
+ my $r;
+ my $j = shift;
+ unless ($j) {
+ LogDbg('DXUser', "DXSubcommand::thaw: empty string on input");
+ return q{[null, ""]};
+ }
+
+ return [undef, [1]] unless $j;
+ eval { $r = decode_json($j) };
+ if ($@) {
+ LogDbg('DXUser', "DXSubcommand::thaw: json error on '$j': $@");
+ $r = qq{[$@,[1]]};
+ }
+ return $r;
+}
+1;
+
+
$sock->timeout(0);
$sock->start;
$conn->{peerhost} = eval { $handle->peerhost; };
- dbg((ref $conn) . " connected $conn->{cnum} to $conn->{peerhost}:$conn->{peerport}") if isdbg('connll');
+ dbg((ref $conn) . " connected $conn->{cnum} to $conn->{peerhost}:$conn->{peerport}") if isdbg('conn') || isdbg ('connect');
if ($conn->{on_connect}) {
&{$conn->{on_connect}}($conn, $handle);
}
$conn->{peerhost} = $handle->peerhost;
$conn->{peerhost} =~ s|^::ffff:||; # chop off leading pseudo IPV6 stuff on dual stack listeners
$conn->{peerport} = $handle->peerport;
- dbg((ref $conn) . " accept $conn->{cnum} from $conn->{peerhost}:$conn->{peerport}") if isdbg('connll');
+ dbg((ref $conn) . " accept $conn->{cnum} from $conn->{peerhost}:$conn->{peerport}") if isdbg('conn') || isdbg('connect');
my ($rproc, $eproc) = &{$server_conn->{rproc}} ($conn, $conn->{peerhost}, $conn->{peerport});
$conn->{sort} = 'Incoming';
if ($eproc) {