aboutsummaryrefslogtreecommitdiffstats
path: root/cache/cache.go
diff options
context:
space:
mode:
authorMartin Polden <mpolden@mpolden.no>2019-06-12 23:35:18 +0200
committerMartin Polden <mpolden@mpolden.no>2019-06-12 23:35:18 +0200
commitca276d08a287f63380067d08e0ad36ae5af22892 (patch)
tree761a3b0ea966a777a532285de45833fc05be67a2 /cache/cache.go
parent58ac25a4b04ba4dc699bc3ef5107084d18085a70 (diff)
Store pointer to cache value
Diffstat (limited to 'cache/cache.go')
-rw-r--r--cache/cache.go10
1 files changed, 5 insertions, 5 deletions
diff --git a/cache/cache.go b/cache/cache.go
index 69a07cc..289cbb7 100644
--- a/cache/cache.go
+++ b/cache/cache.go
@@ -16,7 +16,7 @@ type Cache struct {
now func() time.Time
maintainer *maintainer
mu sync.RWMutex
- entries map[uint32]value
+ entries map[uint32]*value
keys []uint32
}
@@ -63,7 +63,7 @@ func New(maxSize int, expiryInterval time.Duration) (*Cache, error) {
cache := &Cache{
now: time.Now,
maxSize: maxSize,
- entries: make(map[uint32]value),
+ entries: make(map[uint32]*value),
}
maintain(cache, expiryInterval)
return cache, nil
@@ -93,7 +93,7 @@ func (c *Cache) Get(k uint32) (*dns.Msg, bool) {
if !ok {
return nil, false
}
- if c.isExpired(&v) {
+ if c.isExpired(v) {
return nil, false
}
return v.msg, true
@@ -111,7 +111,7 @@ func (c *Cache) Set(k uint32, v *dns.Msg) {
delete(c.entries, c.keys[0])
c.keys = c.keys[1:]
}
- c.entries[k] = value{v, now}
+ c.entries[k] = &value{v, now}
c.keys = append(c.keys, k)
c.mu.Unlock()
}
@@ -119,7 +119,7 @@ func (c *Cache) Set(k uint32, v *dns.Msg) {
func (c *Cache) deleteExpired() {
c.mu.Lock()
for k, v := range c.entries {
- if c.isExpired(&v) {
+ if c.isExpired(v) {
delete(c.entries, k)
}
}