INET connector
Matt S Trout [Fri, 26 Aug 2016 13:17:16 +0000 (13:17 +0000)]
Changes
lib/Object/Remote/Connection.pm
lib/Object/Remote/Connector/INET.pm [new file with mode: 0644]

diff --git a/Changes b/Changes
index bec886e..352c461 100644 (file)
--- a/Changes
+++ b/Changes
@@ -1,3 +1,4 @@
+  - Add INET connector
   - Make strictures dep explicit
 
 0.003006 - 2016-01-10
index d64a8dd..bb1b260 100644 (file)
@@ -234,6 +234,7 @@ BEGIN {
     Object::Remote::Connector::LocalSudo
     Object::Remote::Connector::SSH
     Object::Remote::Connector::UNIX
+    Object::Remote::Connector::INET
   );
 }
 
diff --git a/lib/Object/Remote/Connector/INET.pm b/lib/Object/Remote/Connector/INET.pm
new file mode 100644 (file)
index 0000000..eb0f188
--- /dev/null
@@ -0,0 +1,30 @@
+package Object::Remote::Connector::INET;
+
+use IO::Socket::INET;
+use Moo;
+
+with 'Object::Remote::Role::Connector';
+
+has socket_path => (is => 'ro', required => 1);
+
+sub _open2_for {
+  my ($self) = @_;
+  my $path = $self->socket_path;
+  my $sock = IO::Socket::INET->new($path)
+    or die "Couldn't open socket ${path}: $!";
+  ($sock, $sock, undef);
+}
+
+no warnings 'once';
+
+push @Object::Remote::Connection::Guess, sub {
+  for ($_[0]) {
+    if (defined and !ref and /^.+:\d+$/) {
+      my $socket = shift(@_);
+      return __PACKAGE__->new(@_, socket_path => $socket);
+    }
+  }
+  return;
+};
+
+1;