fix: use pointers for expiration date

This commit is contained in:
Bruno Carlin 2025-01-17 10:33:39 +01:00
parent a3b5b9b1d9
commit cb38484486
Signed by: bcarlin
GPG key ID: 8E254EA0FFEB9B6D

View file

@ -1,6 +1,6 @@
// Package cache defines an in-memory key-value store.
//
// It supports exîration dates andcan store arbitrary values of any type.
// It supports exîration dates and can store arbitrary values of any type.
// Keys must be strings.
package cache
@ -10,7 +10,7 @@ import (
)
type entry struct {
expirationDate time.Time
expirationDate *time.Time
value interface{}
}
@ -33,7 +33,7 @@ func (c *Cache) Put(key string, val interface{}) {
c.mu.Lock()
defer c.mu.Unlock()
c.data[key] = entry{time.Time{}, val}
c.data[key] = entry{nil, val}
}
// PutTTL stores a value in the cache under the given key. The value will
@ -52,12 +52,12 @@ func (c *Cache) PutTTL(key string, val interface{}, ttl time.Duration) {
c.mu.Lock()
defer c.mu.Unlock()
c.data[key] = entry{exp, val}
c.data[key] = entry{&exp, val}
}
// Get returns the value asspciated with the given key.
// The second return values indicates if the cache hs been hit or not.
func (c Cache) Get(key string) (interface{}, bool) {
func (c *Cache) Get(key string) (interface{}, bool) {
c.mu.RLock()
v, ok := c.data[key]
c.mu.RUnlock()
@ -66,7 +66,7 @@ func (c Cache) Get(key string) (interface{}, bool) {
return nil, false
}
if !v.expirationDate.IsZero() && v.expirationDate.Before(time.Now()) {
if v.expirationDate != nil && v.expirationDate.Before(time.Now()) {
c.Del(key)
return nil, false
@ -85,7 +85,7 @@ func (c *Cache) Del(key string) {
}
// Count returns the total number of entries in the cache (vamid and expired).
func (c Cache) Count() int {
func (c *Cache) Count() int {
c.mu.RLock()
defer c.mu.RUnlock()