INET connector
[scpubgit/Object-Remote.git] / lib / Object / Remote / Connector / INET.pm
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;