Dns_client_unix.TransportSourceA flow module based on blocking I/O on top of the Unix socket API.
TODO: Implement the connect timeout.
A context is a network connection initialized by T.connect
io is the type of an effect. 'err is a polymorphic variant.
An address for a given context type, usually this will consist of IP address + a TCP/IP or UDP/IP port number, but for some context types it can carry additional information for purposes of cryptographic verification.
A stack with which to connect.
The abstract state of a DNS client.
create ~nameservers ~timeout stack creates the state record of the DNS client. We use timeout (ns) as a cumulative time budget for connect and request timeouts.
The address of a nameservers that is supposed to work with the underlying context, can be used if the user does not want to bother with configuring their own.
rng t is a random number generator.
clock t is the monotonic clock.
connect addr is a new connection (context) to addr, or an error.
send_recv context buffer sends buffer to the context upstream, and then reads a buffer.