lxd/cluster/events.go
func Events(endpoints *endpoints.Endpoints, cluster *db.Cluster, f func(int64, api.Event)) (task.Func, task.Schedule) {
	listeners := map[int64]*lxd.EventListener{}

	// Update our pool of event listeners. Since database queries are
	// blocking, we spawn the actual logic in a goroutine, to abort
	// immediately when we receive the stop signal.
	update := func(ctx context.Context) {
		ch := make(chan struct{})
		go func() {
			eventsUpdateListeners(endpoints, cluster, listeners, f)
			ch <- struct{}{}
		}()
		select {
		case <-ch:
		case <-ctx.Done():
		}

	}

	schedule := task.Every(time.Second)

	return update, schedule
}
func Events(endpoints *endpoints.Endpoints, cluster *db.Cluster, f func(int64, api.Event)) (task.Func, task.Schedule) {
	listeners := map[int64]*lxd.EventListener{}

	// Update our pool of event listeners. Since database queries are
	// blocking, we spawn the actual logic in a goroutine, to abort
	// immediately when we receive the stop signal.
	update := func(ctx context.Context) {
		ch := make(chan struct{})
		go func() {
			eventsUpdateListeners(endpoints, cluster, listeners, f)
			ch <- struct{}{}
		}()
		select {
		case <-ch:
		case <-ctx.Done():
		}

	}

	schedule := task.Every(time.Second)

	return update, schedule
}
func Events ( endpoints * endpoints . Endpoints , cluster * db . Cluster , f func ( int64 , api . Event ) ) ( task . Func , task . Schedule ) { listeners := map [ int64 ] * lxd . EventListener { } // Update our pool of event listeners. Since database queries are // blocking, we spawn the actual logic in a goroutine, to abort // immediately when we receive the stop signal. update := func ( ctx context . Context ) { ch := make ( chan struct { } ) go func ( ) { eventsUpdateListeners ( endpoints , cluster , listeners , f ) ch <- struct { } { } } ( ) select { case <- ch : case <- ctx . Done ( ) : } } schedule := task . Every ( time . Second ) return update , schedule }
// Events starts a task that continuously monitors the list of cluster nodes and
// maintains a pool of websocket connections against all of them, in order to
// get notified about events.
//
// Whenever an event is received the given callback is invoked.
Events starts a task that continuously monitors the list of cluster nodes and maintains a pool of websocket connections against all of them in order to get notified about events . Whenever an event is received the given callback is invoked .