Module Uwt.Tcp

module Tcp: sig .. end

TCP handles are used to represent both TCP streams and servers.

type t 
include Uwt.Stream
include Uwt.Handle_ext
include Uwt.Handle_fileno
val to_stream : t -> Uwt.Stream.t
val init : unit -> t

See comment to Uwt.Pipe.init

val init_ipv4 : unit -> t uv_result

wrappers around uv_tcp_init_ex. A socket of the given type will be created immediately instead of lazy (as with Uwt.Tcp.init)

val init_ipv4_exn : unit -> t
val init_ipv6 : unit -> t uv_result
val init_ipv6_exn : unit -> t
val opentcp : Unix.file_descr -> t uv_result

See comment to Uwt.Pipe.openpipe

val opentcp_exn : Unix.file_descr -> t
type mode = 
| Ipv6_only
val bind : ?mode:mode list ->
t -> addr:sockaddr -> unit -> Int_result.unit

Bind the handle to an address and port.

When the port is already taken, you can expect to see an EADDRINUSE error from either Uwt.Tcp.bind, listen or Uwt.Tcp.connect. That is, a successful call to this function does not guarantee that the call to listen or Uwt.Tcp.connect will succeed as well.

val bind_exn : ?mode:mode list -> t -> addr:sockaddr -> unit -> unit
val nodelay : t -> bool -> Int_result.unit

Enable TCP_NODELAY, which disables Nagle's algorithm.

val nodelay_exn : t -> bool -> unit
val enable_keepalive : t -> int -> Int_result.unit

enable_keepalive tcp delay enables keep-alive, the delay is the initial delay in seconds

val enable_keepalive_exn : t -> int -> unit
val disable_keepalive : t -> Int_result.unit
val disable_keepalive_exn : t -> unit
val simultaneous_accepts : t -> bool -> Int_result.unit

Enable / disable simultaneous asynchronous accept requests that are queued by the operating system when listening for new TCP connections.

This setting is used to tune a TCP server for the desired performance. Having simultaneous accepts can significantly improve the rate of accepting connections (which is why it is enabled by default) but may lead to uneven load distribution in multi-process setups.

val simultaneous_accepts_exn : t -> bool -> unit
val getsockname : t -> sockaddr uv_result

Get the current address to which the handle is bound.

val getsockname_exn : t -> sockaddr
val getpeername : t -> sockaddr uv_result

Get the address of the peer connected to the handle.

val getpeername_exn : t -> sockaddr
val connect : t -> addr:sockaddr -> unit Lwt.t

Establish an IPv4 or IPv6 TCP connection.

val accept : t -> t uv_result

initializes a new client, accepts and returns it.

This call is used in conjunction with listen to accept incoming connections. Call this function after receiving a listen callback to accept the connection.

When the listen callback is called it is guaranteed that this function will complete successfully the first time. If you attempt to use it more than once, it may fail. It is suggested to only call this function once per listen callback call.

val accept_exn : t -> t
val with_tcp : (t -> 'a Lwt.t) -> 'a Lwt.t

See comments to Uwt.Pipe.with_pipe

val with_connect : addr:sockaddr -> (t -> 'a Lwt.t) -> 'a Lwt.t
val with_open : Unix.file_descr -> (t -> 'a Lwt.t) -> 'a Lwt.t
val with_accept : t -> (t -> 'a Lwt.t) -> 'a Lwt.t
val accept_raw : server:t -> client:t -> Int_result.unit
val accept_raw_exn : server:t -> client:t -> unit