github.com/cs3org/reva/v2@v2.27.7/pkg/storage/utils/decomposedfs/mtimesyncedcache/map.go (about) 1 package mtimesyncedcache 2 3 import "sync" 4 5 type Map[K comparable, V any] struct { 6 m sync.Map 7 } 8 9 func (m *Map[K, V]) Delete(key K) { m.m.Delete(key) } 10 11 func (m *Map[K, V]) Load(key K) (value V, ok bool) { 12 v, ok := m.m.Load(key) 13 if !ok { 14 return value, ok 15 } 16 return v.(V), ok 17 } 18 19 func (m *Map[K, V]) LoadAndDelete(key K) (value V, loaded bool) { 20 v, loaded := m.m.LoadAndDelete(key) 21 if !loaded { 22 return value, loaded 23 } 24 return v.(V), loaded 25 } 26 27 func (m *Map[K, V]) LoadOrStore(key K, value V) (actual V, loaded bool) { 28 a, loaded := m.m.LoadOrStore(key, value) 29 return a.(V), loaded 30 } 31 32 func (m *Map[K, V]) Range(f func(key K, value V) bool) { 33 m.m.Range(func(key, value any) bool { return f(key.(K), value.(V)) }) 34 } 35 36 func (m *Map[K, V]) Store(key K, value V) { m.m.Store(key, value) } 37 38 func (m *Map[K, V]) Count() int { 39 l := 0 40 m.Range(func(_ K, _ V) bool { 41 l++ 42 return true 43 }) 44 return l 45 }