func doWatch(stream v3.Watcher, requests <-chan string, results chan<- report.Result) { for r := range requests { st := time.Now() wch := stream.Watch(context.TODO(), r) results <- report.Result{Start: st, End: time.Now()} bar.Increment() go recvWatchChan(wch, results) } atomic.AddInt32(&nrWatchCompleted, 1) if atomic.LoadInt32(&nrWatchCompleted) == int32(watchTotalStreams) { watchCompletedNotifier <- struct{}{} } }
func doUnsyncWatch(stream v3.Watcher, rev int64, f func()) { wch := stream.Watch(context.TODO(), "watchkey", v3.WithRev(rev)) if wch == nil { panic("could not open watch channel") } firstWatch.Do(func() { go f() }) i := 0 for i < watchEvents { wev := <-wch i += len(wev.Events) bar.Add(len(wev.Events)) } wg.Done() }
func doWatch(stream v3.Watcher, requests <-chan string) { for r := range requests { st := time.Now() wch := stream.Watch(context.TODO(), r) var errStr string if wch == nil { errStr = "could not open watch channel" } results <- result{errStr: errStr, duration: time.Since(st), happened: time.Now()} bar.Increment() go recvWatchChan(wch) } atomic.AddInt32(&nrWatchCompleted, 1) if atomic.LoadInt32(&nrWatchCompleted) == int32(watchTotalStreams) { watchCompletedNotifier <- struct{}{} } }