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.
The 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.
add_rewrite ~host f t
will add to the t
resolver the f
rewrite rule
for all the domain names that shortest-prefix match host
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 t
resolver, but not otherwise modify it.