Event refactor
This commit is contained in:
@@ -5,11 +5,12 @@ import "sync"
|
||||
type localBroker struct {
|
||||
sync.Mutex
|
||||
|
||||
handlers map[EventType][]Handler
|
||||
handlers map[EventType][]Handler
|
||||
anyHandlers []AnyHandler
|
||||
}
|
||||
|
||||
func NewLocalBroker() *localBroker {
|
||||
return &localBroker{handlers: map[EventType][]Handler{}}
|
||||
return &localBroker{handlers: map[EventType][]Handler{}, anyHandlers: []AnyHandler{}}
|
||||
}
|
||||
|
||||
func (b *localBroker) On(name EventType, handler Handler) {
|
||||
@@ -22,13 +23,25 @@ func (b *localBroker) On(name EventType, handler Handler) {
|
||||
b.handlers[name] = append(b.handlers[name], handler)
|
||||
}
|
||||
|
||||
func (b *localBroker) Emit(name EventType, args ...interface{}) {
|
||||
func (b *localBroker) OnAny(handler AnyHandler) {
|
||||
b.Lock()
|
||||
defer b.Unlock()
|
||||
|
||||
if b.handlers[name] != nil {
|
||||
for _, handler := range b.handlers[name] {
|
||||
handler(args...)
|
||||
}
|
||||
}
|
||||
b.anyHandlers = append(b.anyHandlers, handler)
|
||||
}
|
||||
|
||||
func (b *localBroker) Emit(name EventType, sessionId string, args ...interface{}) {
|
||||
go func() {
|
||||
b.Lock()
|
||||
defer b.Unlock()
|
||||
|
||||
for _, handler := range b.anyHandlers {
|
||||
handler(name, sessionId, args...)
|
||||
}
|
||||
if b.handlers[name] != nil {
|
||||
for _, handler := range b.handlers[name] {
|
||||
handler(sessionId, args...)
|
||||
}
|
||||
}
|
||||
}()
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user