summaryrefslogtreecommitdiff
path: root/plugins/events/broadcaster.go
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/events/broadcaster.go')
-rw-r--r--plugins/events/broadcaster.go24
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)
+ }
+}