Flow.Makemodule IP : Tcpip.Ip.Sinclude Tcpip.Tcp.S with type ipaddr = IP.ipaddrThe type for TCP errors.
The type for TCP write errors.
type ipaddr = IP.ipaddrThe type for IP address representations.
val disconnect : t -> unit Lwt.tDisconnect from the TCP layer. While this might take some time to complete, it can never result in an error.
include Mirage_flow.S
with type flow := flow
and type error := error
and type write_error := write_errorval pp_error : error Fmt.tval pp_write_error : write_error Fmt.tval write : flow -> Cstruct.t -> (unit, write_error) Stdlib.result Lwt.tval writev : flow -> Cstruct.t list -> (unit, write_error) Stdlib.result Lwt.tval shutdown : flow -> [ `read | `read_write | `write ] -> unit Lwt.tval close : flow -> unit Lwt.tGet the destination IP address and destination port that a flow is currently connected to.
Get the source IP address and source port that a flow is currently connected to.
val write_nodelay :
flow ->
Cstruct.t ->
(unit, write_error) Stdlib.result Lwt.twrite_nodelay flow buffer writes the contents of buffer to the flow. The thread blocks until all data has been successfully transmitted to the remote endpoint. Buffering within the layer is minimized in this mode. Note that this API will change in a future revision to be a per-flow attribute instead of a separately exposed function.
val writev_nodelay :
flow ->
Cstruct.t list ->
(unit, write_error) Stdlib.result Lwt.twritev_nodelay flow buffers writes the contents of buffers to the flow. The thread blocks until all data has been successfully transmitted to the remote endpoint. Buffering within the layer is minimized in this mode. Note that this API will change in a future revision to be a per-flow attribute instead of a separately exposed function.
val create_connection :
?keepalive:Tcpip.Tcp.Keepalive.t ->
t ->
(ipaddr * int) ->
(flow, error) Stdlib.result Lwt.tcreate_connection ~keepalive t (addr,port) opens a TCP connection to the specified endpoint.
If the optional argument ?keepalive is provided then TCP keep-alive messages will be sent to the server when the connection is idle. If no responses are received then eventually the connection will be disconnected: read will return Ok `Eof and write will return Error `Closed
val listen :
t ->
port:int ->
?keepalive:Tcpip.Tcp.Keepalive.t ->
(flow -> unit Lwt.t) ->
unitlisten t ~port ~keepalive callback listens on port. The callback is executed for each flow that was established. If keepalive is provided, this configuration will be applied before calling callback.
val unlisten : t -> port:int -> unitunlisten t ~port stops any listener on port.