Library
Module
Module type
Parameter
Class
Class type
type action =
| Resolve_a of [ `host ] Domain_name.t
| Resolve_aaaa of [ `host ] Domain_name.t
| Connect of [ `host ] Domain_name.t * id * int * Ipaddr.t * int
| Connect_failed of [ `host ] Domain_name.t * id * string
The variant of actions to be performed by the effectful layer.
type event =
| Resolved_a of [ `host ] Domain_name.t * Ipaddr.V4.Set.t
| Resolved_aaaa of [ `host ] Domain_name.t * Ipaddr.V6.Set.t
| Resolved_a_failed of [ `host ] Domain_name.t * string
| Resolved_aaaa_failed of [ `host ] Domain_name.t * string
| Connection_failed of [ `host ] Domain_name.t * id * Ipaddr.t * int * string
| Connected of [ `host ] Domain_name.t * id * Ipaddr.t * int
The variant of events.
val create :
?aaaa_timeout:int64 ->
?connect_delay:int64 ->
?connect_timeout:int64 ->
?resolve_timeout:int64 ->
?resolve_retries:int ->
int64 ->
t
create ~aaaa_timeout ~connect_delay ~connect_timeout ~resolve_timeout ~resolve_retries ts
creates the internal state, initialized with the timestamp ts
(an arbitrary number that must be monotonically increasing). The timeouts are specified in nanoseconds: the default of aaaa_timeout
is Duration.of_ms 50
, connect_delay
is Duration.of_ms 50
, connect_timeout
is Duration.of_sec 10
, and resolve_timeout
is Duration.of_sec 1
. The resolve_retries
defaults to 3.
timer t ts
is a timer function that results in an updated t
and either `Suspend
signalling that there are no pending connection establishments and the timer thread can suspend, or `Act
that the timer should be called again after sleeping. In addition, a list of actions that need to be performed (connection establishment to be retried, connection failures to be reported, ...) is provided. If the timer thread has been suspended it should be signalled to resume after calling connect
or connect_ip
.
val connect :
t ->
int64 ->
?aaaa_timeout:int64 ->
?connect_delay:int64 ->
?connect_timeout:int64 ->
?resolve_timeout:int64 ->
?resolve_retries:int ->
id:id ->
[ `host ] Domain_name.t ->
int list ->
t * action list
connect t ts ~aaaa_timeout ~connect_delay ~connect_timeout ~resolve_timeout ~resolve_retries ~id host ports
attempts a connection to host
, where the ports
are attempted in sequence. It results in an updated t
and a list of actions to be performed. The timeouts and delays are specified in nanoseconds, and default to the value provided when create
was executed.
val connect_ip :
t ->
int64 ->
?aaaa_timeout:int64 ->
?connect_delay:int64 ->
?connect_timeout:int64 ->
id:id ->
(Ipaddr.t * int) list ->
t * action list
connect_ip t ts ~aaaa_timeout ~connect_delay ~connect_timeout ~id addresses
attempts a connection to addresses
. By default, the list will be tried in sequence. The ports will be tried in sequence. The result is an updated t
and a list of actions to be performed. The timeouts and delays are specified in nanoseconds, and default to the values provided when create
was executed.
event t ts ev
results in an updated t
and a list of actions to be performed.
val resolve_timeout : t -> int64
resolve_timeout t
is the timeout for the resolver in nanoseconds.
module Waiter_map : sig ... end
A map for waiters and internal id.