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)
|
||||
Delete(string)
|
||||
DeleteExpired()
|
||||
ItemCount() int
|
||||
Flush()
|
||||
Save(io.Writer) error
|
||||
SaveFile(string) error
|
||||
|
@ -933,6 +934,15 @@ func (c *cache) LoadFile(fname string) error {
|
|||
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.
|
||||
func (c *cache) Flush() {
|
||||
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) {
|
||||
tc := New(0, 0)
|
||||
tc.Set("foo", "bar", 0)
|
||||
|
|
Loading…
Reference in New Issue