feat(netxlite): introduce wrapping constructors (#507)
This diff has been extracted from https://github.com/ooni/probe-cli/pull/506. In it, we introduce wrapping constructors for types and we update the docs. These new constructures are used by the code in https://github.com/ooni/probe-cli/pull/506. In itself, this work is part of https://github.com/ooni/probe/issues/1733.
This commit is contained in:
parent
985c1ba761
commit
741a8bc4c2
3 changed files with 45 additions and 25 deletions
|
|
@ -25,10 +25,15 @@ type Resolver interface {
|
|||
CloseIdleConnections()
|
||||
}
|
||||
|
||||
// NewResolverStdlib creates a new resolver using system
|
||||
// facilities for resolving domain names (e.g., getaddrinfo).
|
||||
//
|
||||
// The resolver will provide the following guarantees:
|
||||
// NewResolverStdlib creates a new Resolver by combining
|
||||
// WrapResolver with an internal "system" resolver type that
|
||||
// adds extra functionality to net.Resolver.
|
||||
func NewResolverStdlib(logger Logger) Resolver {
|
||||
return WrapResolver(logger, &resolverSystem{})
|
||||
}
|
||||
|
||||
// WrapResolver creates a new resolver that wraps an
|
||||
// existing resolver to add these properties:
|
||||
//
|
||||
// 1. handles IDNA;
|
||||
//
|
||||
|
|
@ -41,12 +46,12 @@ type Resolver interface {
|
|||
//
|
||||
// 5. enforces reasonable timeouts (
|
||||
// see https://github.com/ooni/probe/issues/1726).
|
||||
func NewResolverStdlib(logger Logger) Resolver {
|
||||
func WrapResolver(logger Logger, resolver Resolver) Resolver {
|
||||
return &resolverIDNA{
|
||||
Resolver: &resolverLogger{
|
||||
Resolver: &resolverShortCircuitIPAddr{
|
||||
Resolver: &resolverErrWrapper{
|
||||
Resolver: &resolverSystem{},
|
||||
Resolver: resolver,
|
||||
},
|
||||
},
|
||||
Logger: logger,
|
||||
|
|
|
|||
Loading…
Reference in a new issue