diff options
Diffstat (limited to 'vendor/git.iim.gay/grufwub/go-mutexes')
-rw-r--r-- | vendor/git.iim.gay/grufwub/go-mutexes/map.go | 24 | ||||
-rw-r--r-- | vendor/git.iim.gay/grufwub/go-mutexes/mutex_timeout.go | 11 |
2 files changed, 14 insertions, 21 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() diff --git a/vendor/git.iim.gay/grufwub/go-mutexes/mutex_timeout.go b/vendor/git.iim.gay/grufwub/go-mutexes/mutex_timeout.go index ffda6e890..65ca9f39e 100644 --- a/vendor/git.iim.gay/grufwub/go-mutexes/mutex_timeout.go +++ b/vendor/git.iim.gay/grufwub/go-mutexes/mutex_timeout.go @@ -43,7 +43,7 @@ type timeoutMutex struct { } func (mu *timeoutMutex) Lock() func() { - return mu.LockFunc(func() { panic("timed out") }) + return mu.LockFunc(func() { panic("lock timed out") }) } func (mu *timeoutMutex) LockFunc(fn func()) func() { @@ -58,7 +58,7 @@ type timeoutRWMutex struct { } func (mu *timeoutRWMutex) Lock() func() { - return mu.LockFunc(func() { panic("timed out") }) + return mu.LockFunc(func() { panic("lock timed out") }) } func (mu *timeoutRWMutex) LockFunc(fn func()) func() { @@ -66,7 +66,7 @@ func (mu *timeoutRWMutex) LockFunc(fn func()) func() { } func (mu *timeoutRWMutex) RLock() func() { - return mu.RLockFunc(func() { panic("timed out") }) + return mu.RLockFunc(func() { panic("rlock timed out") }) } func (mu *timeoutRWMutex) RLockFunc(fn func()) func() { @@ -76,7 +76,8 @@ func (mu *timeoutRWMutex) RLockFunc(fn func()) func() { // timeoutPool provides nowish.Timeout objects for timeout mutexes var timeoutPool = sync.Pool{ New: func() interface{} { - return nowish.NewTimeout() + t := nowish.NewTimeout() + return &t }, } @@ -88,7 +89,7 @@ func mutexTimeout(d time.Duration, unlock func(), fn func()) func() { } // Acquire timeout obj - t := timeoutPool.Get().(nowish.Timeout) + t := timeoutPool.Get().(*nowish.Timeout) // Start the timeout with hook t.Start(d, fn) |