summaryrefslogtreecommitdiffstats
path: root/common/maps/cache.go
diff options
context:
space:
mode:
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2024-06-08 11:52:22 +0200
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2024-06-23 11:25:47 +0200
commit6cd0784e447f18e009cbbf30de471e486f7cf356 (patch)
tree0684d05d7e487ebe93463636ed8b5a1bb78e4704 /common/maps/cache.go
parent8731d8822216dd3c7587769e3cf5d98690717b0c (diff)
Implement deferHEADmaster
Closes #8086 Closes #12589
Diffstat (limited to 'common/maps/cache.go')
-rw-r--r--common/maps/cache.go20
1 files changed, 20 insertions, 0 deletions
diff --git a/common/maps/cache.go b/common/maps/cache.go
index 3723d318e..7cd7410c2 100644
--- a/common/maps/cache.go
+++ b/common/maps/cache.go
@@ -74,6 +74,26 @@ func (c *Cache[K, T]) ForEeach(f func(K, T)) {
}
}
+func (c *Cache[K, T]) Drain() map[K]T {
+ c.Lock()
+ m := c.m
+ c.m = make(map[K]T)
+ c.Unlock()
+ return m
+}
+
+func (c *Cache[K, T]) Len() int {
+ c.RLock()
+ defer c.RUnlock()
+ return len(c.m)
+}
+
+func (c *Cache[K, T]) Reset() {
+ c.Lock()
+ c.m = make(map[K]T)
+ c.Unlock()
+}
+
// SliceCache is a simple thread safe cache backed by a map.
type SliceCache[T any] struct {
m map[string][]T