minor API cleanups
Matt S Trout [Mon, 11 Jun 2012 23:17:11 +0000 (00:17 +0100)]
lib/Object/Remote.pm
lib/Object/Remote/Connection.pm
t/basic.t

index 8894cc7..fc6e955 100644 (file)
@@ -7,7 +7,7 @@ use Module::Runtime qw(use_module);
 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 {
index 2dcaa36..c5bc9f6 100644 (file)
@@ -41,9 +41,15 @@ sub _build_ready_future { CPS::Future->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 { {} });
 
@@ -95,7 +101,7 @@ sub new_from_spec {
   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
@@ -109,7 +115,7 @@ sub connect {
   ));
 }
 
-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));
index 0289dc0..b5a83b7 100644 (file)
--- a/t/basic.t
+++ b/t/basic.t
@@ -29,7 +29,7 @@ is($remote->call_callback(27, sub { $x++ }), 27, "Callback ok");
 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'
 );