package aghnet // DefaultRefreshIvl is the default period of time between refreshing cached // addresses. // const DefaultRefreshIvl = 5 * time.Minute // HostGenFunc is the signature for functions generating fake hostnames. The // implementation must be safe for concurrent use. type HostGenFunc func() (host string) // SystemResolvers helps to work with local resolvers' addresses provided by OS. type SystemResolvers interface { // Get returns the slice of local resolvers' addresses. It must be safe for // concurrent use. Get() (rs []string) // refresh refreshes the local resolvers' addresses cache. It must be safe // for concurrent use. refresh() (err error) } // NewSystemResolvers returns a SystemResolvers with the cache refresh rate // defined by refreshIvl. It disables auto-refreshing if refreshIvl is 0. If // nil is passed for hostGenFunc, the default generator will be used. func NewSystemResolvers( hostGenFunc HostGenFunc, ) (sr SystemResolvers, err error) { sr = newSystemResolvers(hostGenFunc) // Fill cache. err = sr.refresh() if err != nil { return nil, err } return sr, nil }