diff options
Diffstat (limited to 'vendor/git.iim.gay/grufwub/go-mutexes/map.go')
-rw-r--r-- | vendor/git.iim.gay/grufwub/go-mutexes/map.go | 24 |
1 files changed, 8 insertions, 16 deletions
diff --git a/vendor/git.iim.gay/grufwub/go-mutexes/map.go b/vendor/git.iim.gay/grufwub/go-mutexes/map.go index 1e5b2781a..ea917ee5e 100644 --- a/vendor/git.iim.gay/grufwub/go-mutexes/map.go +++ b/vendor/git.iim.gay/grufwub/go-mutexes/map.go @@ -8,15 +8,7 @@ import ( // by key. You do not need to worry about managing the contents of the map, // only requesting RLock/Lock for keys, and ensuring to call the returned // unlock functions. -type MutexMap interface { - // Lock acquires a mutex lock for supplied key, returning an Unlock function - Lock(key string) (unlock func()) - - // RLock acquires a mutex read lock for supplied key, returning an RUnlock function - RLock(key string) (runlock func()) -} - -type mutexMap struct { +type MutexMap struct { // NOTE: // Individual keyed mutexes should ONLY ever // be locked within the protection of the outer @@ -35,7 +27,7 @@ func NewMap(newFn func() RWMutex) MutexMap { if newFn == nil { newFn = NewRW } - return &mutexMap{ + return MutexMap{ mus: make(map[string]RWMutex), mapMu: sync.Mutex{}, pool: sync.Pool{ @@ -46,7 +38,7 @@ func NewMap(newFn func() RWMutex) MutexMap { } } -func (mm *mutexMap) evict(key string, mu RWMutex) { +func (mm *MutexMap) evict(key string, mu RWMutex) { // Acquire map lock mm.mapMu.Lock() @@ -63,21 +55,21 @@ func (mm *mutexMap) evict(key string, mu RWMutex) { mm.pool.Put(mu) } -// GetRLock acquires a mutex read lock for supplied key, returning an RUnlock function -func (mm *mutexMap) RLock(key string) func() { +// RLock acquires a mutex read lock for supplied key, returning an RUnlock function +func (mm *MutexMap) RLock(key string) func() { return mm.getLock(key, func(mu RWMutex) func() { return mu.RLock() }) } -// GetLock acquires a mutex lock for supplied key, returning an Unlock function -func (mm *mutexMap) Lock(key string) func() { +// Lock acquires a mutex lock for supplied key, returning an Unlock function +func (mm *MutexMap) Lock(key string) func() { return mm.getLock(key, func(mu RWMutex) func() { return mu.Lock() }) } -func (mm *mutexMap) getLock(key string, doLock func(RWMutex) func()) func() { +func (mm *MutexMap) getLock(key string, doLock func(RWMutex) func()) func() { // Get map lock mm.mapMu.Lock() |