wip: migrate to mono-repo. SPN has already been moved to spn/

This commit is contained in:
Patrick Pacher
2024-03-15 11:55:13 +01:00
parent b30fd00ccf
commit 8579430db9
577 changed files with 35981 additions and 818 deletions

46
spn/docks/cranehooks.go Normal file
View File

@@ -0,0 +1,46 @@
package docks
import (
"sync"
"github.com/safing/portbase/log"
)
var (
craneUpdateHook func(crane *Crane)
craneUpdateHookLock sync.Mutex
)
// RegisterCraneUpdateHook allows the captain to hook into receiving updates for cranes.
func RegisterCraneUpdateHook(fn func(crane *Crane)) {
craneUpdateHookLock.Lock()
defer craneUpdateHookLock.Unlock()
if craneUpdateHook == nil {
craneUpdateHook = fn
} else {
log.Error("spn/docks: crane update hook already registered")
}
}
// ResetCraneUpdateHook resets the hook for receiving updates for cranes.
func ResetCraneUpdateHook() {
craneUpdateHookLock.Lock()
defer craneUpdateHookLock.Unlock()
craneUpdateHook = nil
}
// NotifyUpdate calls the registers crane update hook function.
func (crane *Crane) NotifyUpdate() {
if crane == nil {
return
}
craneUpdateHookLock.Lock()
defer craneUpdateHookLock.Unlock()
if craneUpdateHook != nil {
craneUpdateHook(crane)
}
}