Module Net.Endpoint

Network endpoints.

Endpoints

type t = [
  1. | `Host of string * int
    (*

    Hostname and port.

    *)
  2. | `Sockaddr of Unix.sockaddr
    (*

    Direct socket address.

    *)
  3. | `Fd of Unix.file_descr
    (*

    Direct file descriptor.

    *)
]

The type for network endpoints.

val of_string : default_port:int -> string -> (t, string) Stdlib.result

of_string ~default_port s parses a socket endpoint specification from s.

The format is ADDR[:PORT] or PATH for a Unix domain socket (detected by the the presence of a directory separator). default_port port is used if no PORT is specified.

val with_port_of_sockaddr : Unix.sockaddr -> t -> t

with_port_of_sockaddr addr ep makes ep's port coincide with the port of addr iff both have a port. Otherwise this is ep itself. Mostly useful to adjust an endpoint whose port number was specified as 0 in order to get the one allocated by bind(2).

Wait connectable

TODO. Review with actions in mind.

val wait_connectable' : ?socket_type:Unix.socket_type -> timeout:Mtime.Span.t -> t -> ([ `Ready | `Timeout ], string) Stdlib.result

wait_connectable' ~timeout ep st blocks until ep becomes connectable or duration timeout elapses.

socket_type defines the kind of socket connection, it defaults to Unix.SOCK_STREAM.

val wait_connectable : ?socket_type:Unix.socket_type -> timeout:Mtime.Span.t -> t -> (unit, string) Stdlib.result

wait_connectable is like wait_connectable' but errors with a message on timeout.

Formatting

val pp : Stdlib.Format.formatter -> t -> unit

pp formats endpoints for inspection.