+class BresBulkResolver (BaseBulkResolver):
+ """
+ A BulkResolver using mLib's `bres' background resolver.
+
+ This is always available (and might use ADNS), but only does IPv4.
+ """
+
+ def __init__(me):
+ super(BresBulkResolver, me).__init__()
+ """Initialize the resolver."""
+ me._noutstand = 0
+
+ def _prepare(me, host, name):
+ """Arrange to resolve a NAME, reporting the results to HOST."""
+ host._resolv = M.SelResolveByName(
+ name,
+ lambda cname, alias, addr: me._resolved(host, cname, addr),
+ lambda: me._resolved(host, None, []))
+ me._noutstand += 1
+
+ def run(me):
+ """Run the background DNS resolver until it's finished."""
+ while me._noutstand: M.select()
+