package dns import ( "net" "github.com/v2ray/v2ray-core/app" ) const ( APP_ID = app.ID(2) ) // A DnsCache is an internal cache of DNS resolutions. type DnsCache interface { Get(domain string) net.IP Add(domain string, ip net.IP) } type dnsCacheWithContext interface { Get(context app.Context, domain string) net.IP Add(contaxt app.Context, domain string, ip net.IP) } type contextedDnsCache struct { context app.Context dnsCache dnsCacheWithContext } func (this *contextedDnsCache) Get(domain string) net.IP { return this.dnsCache.Get(this.context, domain) } func (this *contextedDnsCache) Add(domain string, ip net.IP) { this.dnsCache.Add(this.context, domain, ip) } func init() { app.RegisterApp(APP_ID, func(context app.Context, obj interface{}) interface{} { dcContext := obj.(dnsCacheWithContext) return &contextedDnsCache{ context: context, dnsCache: dcContext, } }) }