mpp-client-go/events/EventEmitter.go

44 lines
734 B
Go

package events
type EventCallback func(args ...any)
type Event struct {
Evtn string
Callback EventCallback
Once bool
}
type EventEmitter struct {
Events map[string][]Event
}
func NewEventEmitter() EventEmitter {
return EventEmitter{
Events: map[string][]Event{},
}
}
func (evt *EventEmitter) On(evtn string, callback EventCallback) {
if evt.Events[evtn] == nil {
evt.Events[evtn] = []Event{}
}
evt.Events[evtn] = append(evt.Events[evtn], Event{
Evtn: evtn,
Callback: callback,
Once: false,
})
}
func (evt *EventEmitter) Emit(evtn string, args ...any) {
if evt.Events[evtn] == nil {
return
}
for _, e := range evt.Events[evtn] {
if e.Callback != nil {
e.Callback(args...)
}
}
}