neoneo-go/pkg/pubsub/pub.go

22 lines
448 B
Go
Raw Normal View History

2019-02-25 22:44:14 +00:00
package pubsub
// Publisher sends events to subscribers
2019-02-25 22:44:14 +00:00
type Publisher struct {
subs []Subscriber
}
// Send iterates over each subscriber and checks
// if they are interested in the Event
// By looking at their topics, if they are then
// the event is emitted to them
func (p *Publisher) Send(e Event) error {
for _, sub := range p.subs {
for _, topic := range sub.Topics() {
if e.Type == topic {
sub.Emit(e)
}
}
}
return nil
}