func()

in bus/bus.go [90:121]


func (b *bus) Publish(e Event) {
	b.RLock()
	defer b.RUnlock()

	b.log.Debugf("%+v", e)
	if len(b.listeners) == 0 && b.store != nil {
		b.store <- e
		return
	}

	if b.store != nil && len(b.store) != 0 {
		doBreak := false
		for !doBreak {
			select {
			case eve := <-b.store:
				for _, listener := range b.listeners {
					if listener.interested(eve) {
						listener.channel <- eve
					}
				}
			default:
				doBreak = true
			}
		}
	}

	for _, listener := range b.listeners {
		if listener.interested(e) {
			listener.channel <- e
		}
	}
}