| 123456789101112131415161718192021222324252627282930313233343536373839404142434445 | 
							- 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.Register(APP_ID, func(context app.Context, obj interface{}) interface{} {
 
- 		dcContext := obj.(dnsCacheWithContext)
 
- 		return &contextedDnsCache{
 
- 			context:  context,
 
- 			dnsCache: dcContext,
 
- 		}
 
- 	})
 
- }
 
 
  |