Luv.Pipe
Pipes.
See Child process I/O and IPC in the user guide, and uv_pipe_t
— Pipe handle in libuv.
type t = [ `Pipe ] Stream.t
Binds uv_pipe_t
.
Note that values of this type can also be used with functions in:
In particular, see Luv.Handle.close
, Luv.Stream.accept
, Luv.Stream.read_start
, Luv.Stream.write
.
Allocates and initializes a pipe.
Binds uv_pipe_init
.
The pipe is not yet connected to anything at this point. See Luv.Pipe.bind
, Luv.Stream.listen
, and Luv.Pipe.connect
.
Wraps an existing file descriptor in a libuv pipe.
Binds uv_pipe_open
.
val pipe :
?read_flags:TCP.Flag.t list ->
?write_flags:TCP.Flag.t list ->
unit ->
(File.t * File.t, Error.t) Stdlib.result
Creates a pair of connected pipes.
In case of success, in the value (read_pipe, write_pipe)
, data written to write_pipe
can be read from read_pipe
.
?read_flags
specifies flags for read_pipe
. Likewise, ?write_flags
specifies flags for write_pipe
. The only possible flag at the moment is `NONBLOCK
, which binds UV_NONBLOCK_PIPE
. Both arguments are set to [`NONBLOCK]
by default.
Requires Luv 0.5.7 and libuv 1.41.0.
Feature check: Luv.Require.(has pipe)
Assigns a pipe a name or an address.
Binds uv_pipe_bind2
. See bind(3p)
.
?no_truncate
binds UV_PIPE_NO_TRUNCATE
, which causes this function to return EINVAL
rather than truncating the path, if the path is too long.
?no_truncate
and Linux abstract namespace sockets require Luv 0.5.13 and libuv 1.46.0.
Feature check: Luv.Require.(has pipe_bind2)
Connects to the pipe at the given name or address.
Binds uv_pipe_connect2
. See connect(3p)
.
?no_truncate
binds UV_PIPE_NO_TRUNCATE
, which causes this function to return EINVAL
rather than truncating the path, if the path is too long.
?no_truncate
and Linux abstract namespace sockets require Luv 0.5.13 and libuv 1.46.0.
Feature check: Luv.Require.(has pipe_connect2)
Retrieves the name or address assigned to the given pipe.
Binds uv_pipe_getsockname
. See getsockname(3p)
.
Retrieves the name or address of the given pipe's peer.
Binds uv_pipe_getpeername
. See getpeername(3p)
.
val pending_instances : t -> int -> unit
Binds uv_pipe_pending_instances
.
val receive_handle :
t ->
[ `TCP of TCP.t -> (unit, Error.t) Stdlib.result
| `Pipe of t -> (unit, Error.t) Stdlib.result
| `None ]
Receives a file descriptor over the given pipe.
File descriptors are sent using the ~send_handle
argument of Luv.Stream.write2
.
On the receiving end, call Luv.Stream.read_start
. When that function calls its callback, there may be file descriptors in the pipe, in addition to the ordinary data provided to the callback.
To check, call this function Luv.Pipe.receive_handle
in a loop until it returns `None
. Each time it returns `TCP receive
or `Pipe receive
, create an appropriate handle
using either Luv.TCP.init
or Luv.Pipe.init
, and call receive handle
to receive the file descriptor and associate it with handle
.
module Mode : sig ... end
Constants for Luv.Pipe.chmod
.
Sets pipe permissions.
Binds uv_pipe_chmod
.
Requires libuv 1.16.0.
Feature check: Luv.Require.(has pipe_chmod)