diff options
Diffstat (limited to 'plugins/events/broadcaster.go')
-rw-r--r-- | plugins/events/broadcaster.go | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/plugins/events/broadcaster.go b/plugins/events/broadcaster.go new file mode 100644 index 00000000..778b307d --- /dev/null +++ b/plugins/events/broadcaster.go @@ -0,0 +1,24 @@ +package events + +type EventListener interface { + Handle(event interface{}) +} + +type EventBroadcaster struct { + listeners []EventListener +} + +func NewEventBroadcaster() *EventBroadcaster { + return &EventBroadcaster{} +} + +func (eb *EventBroadcaster) AddListener(l EventListener) { + // todo: threadcase + eb.listeners = append(eb.listeners, l) +} + +func (eb *EventBroadcaster) Push(e interface{}) { + for _, l := range eb.listeners { + l.Handle(e) + } +} |