-
Notifications
You must be signed in to change notification settings - Fork 0
/
event_router.go
39 lines (31 loc) · 866 Bytes
/
event_router.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
package router
import (
"errors"
"github.com/AdamShannag/gosockz/types"
)
var (
ErrEventNotSupported = errors.New("this event type is not supported")
)
type EventRouter struct {
handlers map[types.EventType]types.EventHandler
}
func NewEventRouter() *EventRouter {
return &EventRouter{handlers: make(map[types.EventType]types.EventHandler)}
}
func (er *EventRouter) Route(event types.Event, client types.Client) error {
if handler, ok := er.handlers[event.Type]; ok {
if err := handler(event, client); err != nil {
return err
}
return nil
} else {
return ErrEventNotSupported
}
}
func (er *EventRouter) Handle(eventType types.EventType, eventHandler types.EventHandler) types.EventRouter {
er.handlers[eventType] = eventHandler
return er
}
func (er *EventRouter) Handlers() map[types.EventType]types.EventHandler {
return er.handlers
}