@@ -2,18 +2,19 @@ package events
2
2
3
3
import (
4
4
"fmt"
5
+ api "github.com/metacosm/odo-event-api/odo/api/events"
5
6
"github.com/spf13/cobra"
6
7
)
7
8
8
- type typesToListeners map [EventType ][]Listener
9
+ type typesToListeners map [api. EventType ][]api. Listener
9
10
10
11
type EventBus struct {
11
12
listeners map [string ]typesToListeners
12
- allListeners []Listener
13
+ allListeners []api. Listener
13
14
}
14
15
15
16
var bus = & EventBus {
16
- allListeners : make ([]Listener , 0 , 5 ),
17
+ allListeners : make ([]api. Listener , 0 , 5 ),
17
18
}
18
19
19
20
func GetEventBus () * EventBus {
@@ -27,9 +28,9 @@ func EventNameFrom(cmd *cobra.Command) string {
27
28
return cmd .Name ()
28
29
}
29
30
30
- func DispatchEvent (cmd * cobra.Command , eventType EventType , payload interface {}) error {
31
+ func DispatchEvent (cmd * cobra.Command , eventType api. EventType , payload interface {}) error {
31
32
eventBus := GetEventBus ()
32
- err := eventBus .DispatchEvent (Event {
33
+ err := eventBus .DispatchEvent (api. Event {
33
34
Name : EventNameFrom (cmd ),
34
35
Type : eventType ,
35
36
Payload : payload ,
@@ -38,13 +39,13 @@ func DispatchEvent(cmd *cobra.Command, eventType EventType, payload interface{})
38
39
return err
39
40
}
40
41
41
- func (bus * EventBus ) RegisterToAll (listener Listener ) {
42
+ func (bus * EventBus ) RegisterToAll (listener api. Listener ) {
42
43
bus .allListeners = append (bus .allListeners , listener )
43
44
}
44
45
45
46
type Subscription struct {
46
- Listener Listener
47
- SupportedEvents map [string ]EventType
47
+ Listener api. Listener
48
+ SupportedEvents map [string ]api. EventType
48
49
}
49
50
50
51
func (bus * EventBus ) Register (subscription Subscription ) {
@@ -53,7 +54,7 @@ func (bus *EventBus) Register(subscription Subscription) {
53
54
}
54
55
}
55
56
56
- func (bus * EventBus ) RegisterSingle (event string , eventType EventType , listener Listener ) {
57
+ func (bus * EventBus ) RegisterSingle (event string , eventType api. EventType , listener api. Listener ) {
57
58
listenersForEvent , ok := bus .listeners [event ]
58
59
if ! ok {
59
60
listenersForEvent = make (typesToListeners , 10 )
@@ -62,16 +63,16 @@ func (bus *EventBus) RegisterSingle(event string, eventType EventType, listener
62
63
63
64
listenersForType , ok := listenersForEvent [eventType ]
64
65
if ! ok {
65
- listenersForType = make ([]Listener , 0 , 10 )
66
+ listenersForType = make ([]api. Listener , 0 , 10 )
66
67
}
67
68
68
69
listenersForEvent [eventType ] = append (listenersForType , listener )
69
70
}
70
71
71
- func (bus * EventBus ) DispatchEvent (event Event ) (err error ) {
72
+ func (bus * EventBus ) DispatchEvent (event api. Event ) (err error ) {
72
73
errors := make ([]error , 0 , 10 )
73
74
listenersForEvent , ok := bus .listeners [event .Name ]
74
- processedListeners := make ([]Listener , 0 , 10 )
75
+ processedListeners := make ([]api. Listener , 0 , 10 )
75
76
var abort bool
76
77
if ok {
77
78
listenersForType , ok := listenersForEvent [event .Type ]
@@ -80,7 +81,7 @@ func (bus *EventBus) DispatchEvent(event Event) (err error) {
80
81
listener := listenersForType [i ]
81
82
err := listener .OnEvent (event )
82
83
if err != nil {
83
- if IsEventCausedAbort (err ) {
84
+ if api . IsEventCausedAbort (err ) {
84
85
abort = true
85
86
return err
86
87
}
@@ -96,7 +97,7 @@ func (bus *EventBus) DispatchEvent(event Event) (err error) {
96
97
listener := bus .allListeners [i ]
97
98
err := listener .OnEvent (event )
98
99
if err != nil {
99
- if IsEventCausedAbort (err ) {
100
+ if api . IsEventCausedAbort (err ) {
100
101
abort = true
101
102
return err
102
103
}
@@ -118,11 +119,11 @@ func (bus *EventBus) DispatchEvent(event Event) (err error) {
118
119
return
119
120
}
120
121
121
- func revertProcessedListenersOnAbort (abort bool , err error , listeners []Listener ) {
122
+ func revertProcessedListenersOnAbort (abort bool , err error , listeners []api. Listener ) {
122
123
if abort {
123
124
124
125
for i := range listeners {
125
- listeners [i ].OnAbort (err .(* EventCausedAbortError ))
126
+ listeners [i ].OnAbort (err .(* api. EventCausedAbortError ))
126
127
}
127
128
}
128
129
}
0 commit comments