v0.0.644 exerr.DeregisterListener
Build Docker and Deploy / Run goext test-suite (push) Failing after 1m18s

This commit is contained in:
2026-05-30 00:13:03 +02:00
parent f4b4978e62
commit 70df2b61b1
4 changed files with 123 additions and 12 deletions
+21 -4
View File
@@ -2,8 +2,15 @@ package exerr
import (
"sync"
"git.blackforestbytes.com/BlackForestBytes/goext/dataext"
"git.blackforestbytes.com/BlackForestBytes/goext/langext"
)
type ListenerKey struct {
_k string
}
type ListenerOpt struct {
NoLog bool
}
@@ -11,20 +18,30 @@ type ListenerOpt struct {
type Listener = func(method Method, v *ExErr, opt ListenerOpt)
var listenerLock = sync.Mutex{}
var listener = make([]Listener, 0)
var listener = dataext.NewOrderedMap[ListenerKey, Listener]()
func RegisterListener(l Listener) {
func RegisterListener(l Listener) ListenerKey {
listenerLock.Lock()
defer listenerLock.Unlock()
listener = append(listener, l)
k := ListenerKey{_k: langext.MustHexUUID()}
listener.Add(k, l)
return k
}
func DeregisterListener(key ListenerKey) {
listenerLock.Lock()
defer listenerLock.Unlock()
listener.Remove(key)
}
func (ee *ExErr) CallListener(m Method, opt ListenerOpt) {
listenerLock.Lock()
defer listenerLock.Unlock()
for _, v := range listener {
for _, v := range listener.Iterate() {
v(m, ee, opt)
}
}