Module Luv.TCP

TCP sockets.

See TCP in the user guide and uv_tcp_t — TCP handle in libuv.

type t = [ `TCP ] Stream.t

Binds uv_tcp_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 -> ?⁠domain:Sockaddr.Address_family.t -> unit -> (tError.t) Result.result

Allocates and initializes a TCP stream.

Binds uv_tcp_init_ex.

The stream is not yet connected or listening. See Luv.TCP.bind, Luv.Stream.listen, and Luv.Stream.connect.

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

Wraps an existing socket in a libuv TCP stream.

Binds uv_tcp_open.

val nodelay : t -> bool -> (unit, Error.t) Result.result

Sets TCP_NODELAY.

Binds uv_tcp_nodelay.

val keepalive : t -> int option -> (unit, Error.t) Result.result

Sets the TCP keepalive.

Binds uv_tcp_keepalive.

val simultaneous_accepts : t -> bool -> (unit, Error.t) Result.result

Sets simultaneous accept.

Binds uv_tcp_simultaneous_accepts.

val bind : ?⁠ipv6only:bool -> t -> Sockaddr.t -> (unit, Error.t) Result.result

Assigns an address to the given TCP socket.

Binds uv_tcp_bind. See bind(3p).

val getsockname : t -> (Sockaddr.tError.t) Result.result

Retrieves the address assigned to the given TCP socket.

Binds uv_tcp_getsockname. See getsockname(3p).

val getpeername : t -> (Sockaddr.tError.t) Result.result

Retrieves the address of the given TCP socket's peer.

Binds uv_tcp_getpeername. See getpeername(3p).

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

Connects to a host.

Binds uv_tcp_connect. See connect(3p).

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

Resets the connection.

Binds uv_tcp_close_reset.