in watcher/watcher.go [89:119]
func (w *Watcher) allNamespacesWatchFor(h EventHandler, c cache.Getter,
fieldSelector fields.Selector, objType pkgruntime.Object,
resyncPeriod time.Duration, listerWatcher cache.ListerWatcher) error {
factory := informers.NewSharedInformerFactory(w.Cs, resyncPeriod)
var sharedInformer cache.SharedIndexInformer
switch objType.(type) {
case *v1.Endpoints:
sharedInformer = factory.Core().V1().Endpoints().Informer()
case *nv1.Ingress:
sharedInformer = factory.Networking().V1().Ingresses().Informer()
}
_, err := sharedInformer.AddEventHandler(cache.ResourceEventHandlerFuncs{
AddFunc: h.Add,
UpdateFunc: h.Update,
DeleteFunc: h.Delete,
})
if err != nil {
return err
}
go sharedInformer.Run(w.StopChan) // new thread
if !cache.WaitForCacheSync(w.StopChan, sharedInformer.HasSynced) {
s := fmt.Sprintf("Timed out waiting for %s caches to sync", h.GetResourceName())
utilruntime.HandleError(errors.New(s))
return errors.New(s)
}
return nil
}