1
0
Fork 0
dns-updater/ip/cache.go
2023-04-28 16:43:49 +02:00

34 lines
544 B
Go

package ip
import (
"net"
)
type Cache struct {
resolver NetInterfaceIPResolver
items map[string]net.IP
}
func NewCache(resolver NetInterfaceIPResolver) *Cache {
return &Cache{
resolver: resolver,
items: make(map[string]net.IP),
}
}
func (c Cache) Get(name string) (net.IP, error) {
// Return cached entry.
if cached, ok := c.items[name]; ok {
return cached, nil
}
ip, err := c.resolver(name)
if err == nil {
c.Set(name, ip)
}
return ip, err
}
func (c *Cache) Set(name string, ip net.IP) {
c.items[name] = ip
}