func (d *Discovery) Run(ctx context.Context, ch chan<- []*targetgroup.Group) {
	if d.finalizer != nil {
		defer d.finalizer()
	}
	d.initialize(ctx)

	if len(d.watchedServices) == 0 || len(d.watchedTags) != 0 {
		// We need to watch the catalog.
		ticker := time.NewTicker(d.refreshInterval)

		// Watched services and their cancellation functions.
		services := make(map[string]func())
		var lastIndex uint64

		for {
			select {
			case <-ctx.Done():
				ticker.Stop()
				return
			default:
				d.watchServices(ctx, ch, &lastIndex, services)
				<-ticker.C
			}
		}
	} else {
		// We only have fully defined services.
		for _, name := range d.watchedServices {
			d.watchService(ctx, ch, name)
		}
		<-ctx.Done()
	}
}
func (d *Discovery) Run(ctx context.Context, ch chan<- []*targetgroup.Group) {
	if d.finalizer != nil {
		defer d.finalizer()
	}
	d.initialize(ctx)

	if len(d.watchedServices) == 0 || len(d.watchedTags) != 0 {
		
		ticker := time.NewTicker(d.refreshInterval)

		
		services := make(map[string]func())
		var lastIndex uint64

		for {
			select {
			case <-ctx.Done():
				ticker.Stop()
				return
			default:
				d.watchServices(ctx, ch, &lastIndex, services)
				<-ticker.C
			}
		}
	} else {
		
		for _, name := range d.watchedServices {
			d.watchService(ctx, ch, name)
		}
		<-ctx.Done()
	}
}
func ( d * Discovery ) Run ( ctx context . Context , ch chan <- [ ] * targetgroup . Group ) { if d . finalizer != nil { defer d . finalizer ( ) } d . initialize ( ctx ) if len ( d . watchedServices ) == 0 || len ( d . watchedTags ) != 0 { // We need to watch the catalog. ticker := time . NewTicker ( d . refreshInterval ) // Watched services and their cancellation functions. services := make ( map [ string ] func ( ) ) var lastIndex uint64 for { select { case <- ctx . Done ( ) : ticker . Stop ( ) return default : d . watchServices ( ctx , ch , & lastIndex , services ) <- ticker . C } } } else { // We only have fully defined services. for _ , name := range d . watchedServices { d . watchService ( ctx , ch , name ) } <- ctx . Done ( ) } }
// Run implements the Discoverer interface.
Run implements the Discoverer interface .