NAME

UV::Pipe - Pipe stream handles in libuv

SYNOPSIS

#!/usr/bin/env perl
use strict;
use warnings;

# A new stream handle will be initialised against the default loop
my $pipe = UV::Pipe->new;

$pipe->connect("server.sock", sub {
  say "Connected!";

  $pipe->write("Hello, server!\n");
});

# set up the data read callback
$pipe->on(read => sub {
  my ($self, $err, $buf) = @_;
  say "More data: $buf";
});
$pipe->read_start();

DESCRIPTION

This module provides an interface to libuv's pipe stream handle.

Pipe handles represent a FIFO or UNIX ("local") socket.

EVENTS

UV::Pipe inherits all events from UV::Stream and UV::Handle.

METHODS

UV::Pipe inherits all methods from UV::Stream and UV::Handle and also makes the following extra methods available.

open

$pipe->open($fh);

The open method associates the pipe with an existing filehandle already opened by the process.

bind

$pipe->bind($path);

The bind method associates the pipe with a UNIX socket path or named filehandle, which will be created on the filesystem.

connect

$pipe->connect($path, sub {
    my ($err) = @_;
    die "Cannot connect pipe - $err\n" if $err;

    say "The pipe is now connected";
});

The connect method requests that the pipe be connected a server found on the given path.

On completion the callback is invoked. It is passed undef on success, or an error value on failure. This error value can be compared numerically to one of the UV_E* constants, or printed as a string to give a message.

getpeername

my $path = $pipe->getpeername;

The getpeername method returns the filesystem path to which this pipe handle is connected.

getsockname

my $path = $pipe->getsockname;

The getsockname method returns the filesystem path on which this pipe server handle is listening for incoming connections.

chmod

$pipe->chmod($flags);

The chmod method sets the filesystem permissions on the named pipe or socket to allow access by other users. $flags should be a bitmask of UV_READABLE or UV_WRITABLE.

AUTHOR

Paul Evans <leonerd@leonerd.org.uk>

LICENSE

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.