Connections are created by identifying remote nodes using an endp value. To ensure portability, the
endp values are translated into concrete connections by separate modules that target
Mirage. This lets those backends use the appropriate local technique for creating the connection (such as using OpenSSL on Unix, or a pure OCaml TLS+TCP implementation on Mirage, or some other combination).
The modules dealing with connection establishment are:
All of the name resolvers conform to the
RESOLVER module type. The OS-specific implementations of this interface are:
type endp = [
IP address and destination port*)
Unix domain file path*)
domain id, port*)
Vchan Xen domain socket*)
Wrap in a TLS channel,
End points that can potentially be connected to. These are typically returned by a call to a resolver.
module type IO = sig ... end
Module type for cooperative threading that can be satisfied by Lwt or Async