From c200f51afd33a4c549732b523ed87dc144256e52 Mon Sep 17 00:00:00 2001 From: Kyle Isom Date: Thu, 24 Feb 2022 21:50:54 -0800 Subject: [PATCH] bug fixes --- go.mod | 2 ++ mru.go | 20 ++++++++++---------- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/go.mod b/go.mod index 2260f65..882a0a5 100644 --- a/go.mod +++ b/go.mod @@ -1,3 +1,5 @@ module git.wntrmute.dev/kyle/go-mru go 1.17 + +require github.com/benbjohnson/clock v1.3.0 diff --git a/mru.go b/mru.go index 2aa0cc2..0edee4b 100644 --- a/mru.go +++ b/mru.go @@ -30,7 +30,7 @@ type Cache struct { // New must be used to create a new Cache. func New(cap int) *Cache { return &Cache{ - store: map[string]*Item{}, + store: map[string]*item{}, access: newTimestamps(cap), cap: cap, clock: clock.New(), @@ -39,11 +39,11 @@ func New(cap int) *Cache { } func (c *Cache) lock() { - m.mtx.lock() + c.mtx.Lock() } func (c *Cache) unlock() { - m.mtx.unlock() + c.mtx.Unlock() } // Len returns the number of items currently in the cache. @@ -79,8 +79,8 @@ func (c *Cache) sanityCheck() { // data structures are consistent. It is not normally required, and it // is primarily used in testing. func (c *Cache) ConsistencyCheck() error { - m.lock() - defer m.unlock() + c.lock() + defer c.unlock() if err := c.access.ConsistencyCheck(); err != nil { return err } @@ -111,8 +111,8 @@ func (c *Cache) ConsistencyCheck() error { // Store adds the value v to the cache under the k. func (c *Cache) Store(k string, v interface{}) { - m.lock() - defer m.unlock() + c.lock() + defer c.unlock() c.sanityCheck() @@ -124,7 +124,7 @@ func (c *Cache) Store(k string, v interface{}) { c.evictKey(k) } - itm := &Item{ + itm := &item{ V: v, access: c.clock.Now().UnixNano(), } @@ -136,8 +136,8 @@ func (c *Cache) Store(k string, v interface{}) { // Get returns the value stored in the cache. If the item isn't present, // it will return false. func (c *Cache) Get(k string) (interface{}, bool) { - m.lock() - defer m.unlock() + c.lock() + defer c.unlock() c.sanityCheck()