Add O(1) ItemCount method to retrieve items currently in the cache map (whether expired and not cleaned up or not)
This commit is contained in:
parent
d5d03c28d4
commit
c9f5754801
10
cache.go
10
cache.go
|
@ -49,6 +49,7 @@ type unexportedInterface interface {
|
||||||
DecrementFloat64(string, float64) (float64, error)
|
DecrementFloat64(string, float64) (float64, error)
|
||||||
Delete(string)
|
Delete(string)
|
||||||
DeleteExpired()
|
DeleteExpired()
|
||||||
|
ItemCount() int
|
||||||
Flush()
|
Flush()
|
||||||
Save(io.Writer) error
|
Save(io.Writer) error
|
||||||
SaveFile(string) error
|
SaveFile(string) error
|
||||||
|
@ -933,6 +934,15 @@ func (c *cache) LoadFile(fname string) error {
|
||||||
return fp.Close()
|
return fp.Close()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Returns the number of items in the cache. This may include items that have
|
||||||
|
// expired, but have not yet been cleaned up.
|
||||||
|
func (c *cache) ItemCount() int {
|
||||||
|
c.Lock()
|
||||||
|
n := len(c.items)
|
||||||
|
c.Unlock()
|
||||||
|
return n
|
||||||
|
}
|
||||||
|
|
||||||
// Delete all items from the cache.
|
// Delete all items from the cache.
|
||||||
func (c *cache) Flush() {
|
func (c *cache) Flush() {
|
||||||
c.Lock()
|
c.Lock()
|
||||||
|
|
|
@ -1122,6 +1122,16 @@ func TestDelete(t *testing.T) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestItemCount(t *testing.T) {
|
||||||
|
tc := New(0, 0)
|
||||||
|
tc.Set("foo", "1", 0)
|
||||||
|
tc.Set("bar", "2", 0)
|
||||||
|
tc.Set("baz", "3", 0)
|
||||||
|
if n := tc.ItemCount(); n != 3 {
|
||||||
|
t.Errorf("Item count is not 3: %d", n)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func TestFlush(t *testing.T) {
|
func TestFlush(t *testing.T) {
|
||||||
tc := New(0, 0)
|
tc := New(0, 0)
|
||||||
tc.Set("foo", "bar", 0)
|
tc.Set("foo", "bar", 0)
|
||||||
|
|
Loading…
Reference in New Issue