v0.0.644 exerr.DeregisterListener
Build Docker and Deploy / Run goext test-suite (push) Failing after 1m18s
Build Docker and Deploy / Run goext test-suite (push) Failing after 1m18s
This commit is contained in:
+21
-4
@@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user