Add O(1) ItemCount method to retrieve items currently in the cache map (whether expired and not cleaned up or not)

master
Patrick Mylund Nielsen 12 years ago
parent d5d03c28d4
commit c9f5754801

@ -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…
Cancel
Save