Commit | Line | Data |
0e547800 |
1 | package Object::Remote::Connector::UNIX; |
2 | |
3 | use IO::Socket::UNIX; |
4 | use Moo; |
5 | |
6 | with 'Object::Remote::Role::Connector'; |
7 | |
fbd3b8ec |
8 | has socket_path => (is => 'ro', required => 1); |
9 | |
0e547800 |
10 | sub _open2_for { |
fbd3b8ec |
11 | my ($self) = @_; |
12 | my $path = $self->socket_path; |
0e547800 |
13 | my $sock = IO::Socket::UNIX->new($path) |
14 | or die "Couldn't open socket ${path}: $!"; |
15 | ($sock, $sock, undef); |
16 | } |
17 | |
18 | no warnings 'once'; |
19 | |
55c0d020 |
20 | push @Object::Remote::Connection::Guess, sub { |
0e547800 |
21 | for ($_[0]) { |
22 | if (defined and !ref and /^(?:\.\/|\/)/) { |
c824fdf3 |
23 | my $socket = shift(@_); |
24 | return __PACKAGE__->new(@_, socket_path => $socket); |
0e547800 |
25 | } |
26 | } |
27 | return; |
28 | }; |
29 | |
30 | 1; |
4e25b1fd |
31 | |
32 | =head1 NAME |
33 | |
34 | Object::Remote::Connector::UNIX - A connector for UNIX sockets |
35 | |
8dbf62a5 |
36 | =head1 DESCRIPTION |
37 | |
38 | Used to create a connector that talks to a unix socket. Invoked by |
39 | L<Object::Remote/connect> if the connection spec looks like a unix path name |
40 | that's either absolute, or relative to C<.>. |
41 | |
4e25b1fd |
42 | =head1 ARGUMENTS |
43 | |
44 | Inherits arguments from L<Object::Remote::Role::Connector> and provides the |
45 | following: |
46 | |
47 | =head2 socket_path |
48 | |
8dbf62a5 |
49 | When invoked via L<Object::Remote/connect>, specified via the connection spec, |
50 | and not overridable. |
51 | |
52 | The path name of the unix socket to connect to. Passed to L<IO::Socket::UNIX>. |
53 | |
4e25b1fd |
54 | =cut |