Module Luv.Pipe


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.

val init : ?⁠loop:Loop.t -> ?⁠for_handle_passing:bool -> unit -> (tError.t) Result.result

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.

val open_ : t -> File.t -> (unit, Error.t) Result.result

Wraps an existing file descriptor in a libuv pipe.

Binds uv_pipe_open.

val bind : t -> string -> (unit, Error.t) Result.result

Assigns a pipe a name or an address.

Binds uv_pipe_bind. See bind(3p).

val connect : t -> string -> ((unit, Error.t) Result.result -> unit) -> unit

Connects to the pipe at the given name or address.

Binds uv_pipe_connect. See connect(3p).

val getsockname : t -> (string, Error.t) Result.result

Retrieves the name or address assigned to the given pipe.

Binds uv_pipe_getsockname. See getsockname(3p).

val getpeername : t -> (string, Error.t) Result.result

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) Result.result | `Pipe of t -> (unit, Error.t) Result.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.recieve_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.

val chmod : t -> Mode.t list -> (unit, Error.t) Result.result

Sets pipe permissions.

Binds uv_pipe_chmod.