garm/locking/locking.go
Gabriel Adrian Samfira 5ba53adf84 Switch to locking package
The locking logic was added to its own package as it may need to be used
by other parts of the code.

Signed-off-by: Gabriel Adrian Samfira <gsamfira@cloudbasesolutions.com>
2025-05-03 22:29:40 +00:00

46 lines
731 B
Go

package locking
import (
"fmt"
"sync"
)
var locker Locker
var lockerMux = sync.Mutex{}
func TryLock(key string) (bool, error) {
if locker == nil {
return false, fmt.Errorf("no locker is registered")
}
return locker.TryLock(key), nil
}
func Unlock(key string, remove bool) error {
if locker == nil {
return fmt.Errorf("no locker is registered")
}
locker.Unlock(key, remove)
return nil
}
func Delete(key string) error {
if locker == nil {
return fmt.Errorf("no locker is registered")
}
locker.Delete(key)
return nil
}
func RegisterLocker(lock Locker) error {
lockerMux.Lock()
defer lockerMux.Unlock()
if locker != nil {
return fmt.Errorf("locker already registered")
}
locker = lock
return nil
}