sub new::on {
my ($class, $on, @args) = @_;
my $conn = __PACKAGE__->connect($on);
- return $conn->new_remote(class => $class, args => \@args);
+ return $conn->remote_object(class => $class, args => \@args);
}
sub new {
has _receive_data_buffer => (is => 'ro', default => sub { my $x = ''; \$x });
-has local_objects_by_id => (is => 'ro', default => sub { {} });
+has local_objects_by_id => (
+ is => 'ro', default => sub { {} },
+ coerce => sub { +{ %{$_[0]} } }, # shallow clone on the way in
+);
-has remote_objects_by_id => (is => 'ro', default => sub { {} });
+has remote_objects_by_id => (
+ is => 'ro', default => sub { {} },
+ coerce => sub { +{ %{$_[0]} } }, # shallow clone on the way in
+);
has outstanding_futures => (is => 'ro', default => sub { {} });
die "Couldn't figure out what to do with ${spec}";
}
-sub new_remote {
+sub remote_object {
my ($self, @args) = @_;
Object::Remote::Handle->new(
connection => $self, @args
));
}
-sub get_remote_sub {
+sub remote_sub {
my ($self, $sub) = @_;
my ($pkg, $name) = $sub =~ m/^(.*)::([^:]+)$/;
return await_future($self->send(class_call => $pkg, 0, can => $name));
is($x, 1, "Callback called callback");
is(
- $connection->get_remote_sub('Sys::Hostname::hostname')->(),
+ $connection->remote_sub('Sys::Hostname::hostname')->(),
hostname(),
'Remote sub call ok'
);