package Object::Remote::Connection;
-use Object::Remote::Logging qw (:log :dlog);
+use Object::Remote::Logging qw (:log :dlog router);
use Object::Remote::Future;
use Object::Remote::Null;
use Object::Remote::Handle;
use Moo;
BEGIN {
+ router()->exclude_forwarding;
+
#this will reap child processes as soon
#as they are done executing so the process
#table cleans up as fast as possible but
kill(1, -2);
}
-our $DEBUG = !!$ENV{OBJECT_REMOTE_DEBUG};
-
has _id => ( is => 'ro', required => 1, default => sub { our $NEXT_CONNECTION_ID++ } );
has send_to_fh => (
weaken($self);
$ch->on_line_call(sub { $self->_receive(@_) });
$ch->on_close_call(sub {
- log_trace { "invoking 'done' on on_close handler for connection id '$id'" };
- $self->on_close->done(@_);
+ log_trace { "invoking 'done' on on_close handler for connection id '$id'" };
+ $self->on_close->done(@_);
});
},
);
}
)->filter_json_single_key_object(
__remote_tied_hash__ => sub {
- my %tied_hash;
- tie %tied_hash, 'Object::Remote::Tied', $self->_id_to_remote_object(@_);
- return \%tied_hash;
+ my %tied_hash;
+ tie %tied_hash, 'Object::Remote::Tied', $self->_id_to_remote_object(@_);
+ return \%tied_hash;
}
)->filter_json_single_key_object(
__remote_tied_array__ => sub {
- my @tied_array;
- tie @tied_array, 'Object::Remote::Tied', $self->_id_to_remote_object(@_);
- return \@tied_array;
+ my @tied_array;
+ tie @tied_array, 'Object::Remote::Tied', $self->_id_to_remote_object(@_);
+ return \@tied_array;
}
);
}
sub _load_if_possible {
my ($class) = @_;
- eval "require $class";
+ use_module($class);
if ($@) {
log_debug { "Attempt at loading '$class' failed with '$@'" };
local our @New_Ids = (-1);
return eval {
my $flat = $self->_encode($self->_deobjectify($data));
- warn "$$ >>> ${flat}\n" if $DEBUG;
$flat;
} || do {
my $err = $@; # won't get here if the eval doesn't die
sub _receive {
my ($self, $flat) = @_;
- warn "$$ <<< $flat\n" if $DEBUG;
Dlog_trace { my $l = length($flat); "Starting to deserialize $l characters of data for connection $_" } $self->_id;
my ($type, @rest) = eval { @{$self->_deserialize($flat)} }
or do { warn "Deserialize failed for ${flat}: $@"; return };