package exerr import ( "sync" ) type Method string const ( MethodOutput Method = "OUTPUT" MethodPrint Method = "PRINT" MethodBuild Method = "BUILD" MethodFatal Method = "FATAL" ) type Listener = func(method Method, v *ExErr) var listenerLock = sync.Mutex{} var listener = make([]Listener, 0) func RegisterListener(l Listener) { listenerLock.Lock() defer listenerLock.Unlock() listener = append(listener, l) } func (b *Builder) CallListener(m Method) { valErr := b.errorData listenerLock.Lock() defer listenerLock.Unlock() for _, v := range listener { v(m, valErr) } }