コード例 #1
0
ファイル: manager.go プロジェクト: vmware/vic
// Publish events to subscribers
func (mgr *Manager) Publish(e events.Event) {
	// TODO: this will not block, but might still want to consider
	// a timeout for the callback
	go func() {
		// subscribers for this event
		mgr.subs.mu.RLock()
		subs := mgr.subs.subscribers[e.Topic()]
		mgr.subs.mu.RUnlock()

		log.Debugf("Found %d subscribers to %s: %s", len(subs), e.Topic(), e.Message())

		for sub, f := range subs {
			log.Debugf("Event manager calling back to %s", sub)
			f(e)
		}
	}()
}