Resolve URIs to endpoints
Module type for a [root:resolution] that can map URIs to concrete [root:endp] that stream connections can be established with.
Abstract type of the cooperative threading library used, normally defined via the [root:IO] module type
State handle for a running resolver
Abstract type for a service entry, which maps a URI scheme into a protocol handler and TCP port
init ?service ?rewrites will initialize the resolver and return
a state handler. The service argument should
contain the system-specific resolution mechanism for URI schemas.
rewrites argument can optionally override a subset of the
URI domain name with the given rewrite_fn to permit custom
resolution rules. For example, a rewrite rule for ".xen" would
let the rewrite function resolve hostnames such as "foo.xen"
into a shared memory channel for the "foo" virtual machine.
resolve_uri ?rewrites ~uri t will use
t to resolve the
uri into a concrete endpoint. Any
rewrites that are passed
in will be overlayed on the existing rules within the
resolver, but not otherwise modify it.