update Object::Remote::connect() to pass arguments to the connection
[scpubgit/Object-Remote.git] / lib / Object / Remote / Connection.pm
index e47b8fc..e6a5a98 100644 (file)
@@ -16,11 +16,9 @@ use Module::Runtime qw(use_module);
 use Scalar::Util qw(weaken blessed refaddr openhandle);
 use JSON::PP qw(encode_json);
 use Moo;
+use Carp qw(croak);
 
-BEGIN { 
-  router()->exclude_forwarding;
-  $SIG{PIPE} = sub { log_debug { "Got a PIPE signal" } };
-}
+BEGIN { router()->exclude_forwarding }
 
 END {
   log_debug { "Killing all child processes in the process group" };
@@ -34,9 +32,9 @@ has _id => ( is => 'ro', required => 1, default => sub { our $NEXT_CONNECTION_ID
 has send_to_fh => (
   is => 'ro', required => 1,
   trigger => sub {
-      my $self = $_[0];
-      $_[1]->autoflush(1);
-      Dlog_trace { my $id = $self->_id; "connection had send_to_fh set to $_"  } $_[1];
+    my $self = $_[0];
+    $_[1]->autoflush(1);
+    Dlog_trace { my $id = $self->_id; "connection had send_to_fh set to $_"  } $_[1];
   },
 );
 
@@ -58,8 +56,8 @@ has read_channel => (
 has on_close => (
   is => 'rw', default => sub { $_[0]->_install_future_handlers(CPS::Future->new) },
   trigger => sub {
-      log_trace { "Installing handlers into future via trigger" };
-      $_[0]->_install_future_handlers($_[1])
+    log_trace { "Installing handlers into future via trigger" };
+    $_[0]->_install_future_handlers($_[1])
   },
 );
 
@@ -90,8 +88,8 @@ after BUILD => sub {
   my $pid = $self->child_pid;
   
   unless (defined $pid) {
-      log_trace { "After BUILD invoked for connection but there was no pid" };
-      return;
+    log_trace { "After BUILD invoked for connection but there was no pid" };
+    return;
   }
     
   log_trace { "Setting process group of child process '$pid'" };
@@ -120,6 +118,7 @@ sub _fail_outstanding {
   foreach(keys(%$outstanding)) {
     log_trace { "Failing future for $_" };
     my $future = $outstanding->{$_};
+    $future->fail("$error\n");
   }
 
   %$outstanding = ();
@@ -237,9 +236,9 @@ sub conn_from_spec {
 }
 
 sub new_from_spec {
-  my ($class, $spec) = @_;
+  my ($class, $spec, @args) = @_;
   return $spec if blessed $spec;
-  my $conn = $class->conn_from_spec($spec); 
+  my $conn = $class->conn_from_spec($spec, @args);
   
   die "Couldn't figure out what to do with ${spec}"
     unless defined $conn;
@@ -343,7 +342,7 @@ sub _send {
   my $fh = $self->send_to_fh;
   
   unless ($self->is_valid) {
-    die "Attempt to invoke _send on a connection that is not valid";
+    croak "Attempt to invoke _send on a connection that is not valid";
   }
   
   Dlog_trace { "Starting to serialize data in argument to _send for connection $_" } $self->_id;