func (d *Discovery) watchService(ctx context.Context, ch chan<- []*targetgroup.Group, name string) {
	srv := &consulService{
		discovery: d,
		client:    d.client,
		name:      name,
		tags:      d.watchedTags,
		labels: model.LabelSet{
			serviceLabel:    model.LabelValue(name),
			datacenterLabel: model.LabelValue(d.clientDatacenter),
		},
		tagSeparator: d.tagSeparator,
		logger:       d.logger,
	}

	go func() {
		ticker := time.NewTicker(d.refreshInterval)
		var lastIndex uint64
		catalog := srv.client.Catalog()
		for {
			select {
			case <-ctx.Done():
				ticker.Stop()
				return
			default:
				srv.watch(ctx, ch, catalog, &lastIndex)
				<-ticker.C
			}
		}
	}()
}
func (d *Discovery) watchService(ctx context.Context, ch chan<- []*targetgroup.Group, name string) {
	srv := &consulService{
		discovery: d,
		client:    d.client,
		name:      name,
		tags:      d.watchedTags,
		labels: model.LabelSet{
			serviceLabel:    model.LabelValue(name),
			datacenterLabel: model.LabelValue(d.clientDatacenter),
		},
		tagSeparator: d.tagSeparator,
		logger:       d.logger,
	}

	go func() {
		ticker := time.NewTicker(d.refreshInterval)
		var lastIndex uint64
		catalog := srv.client.Catalog()
		for {
			select {
			case <-ctx.Done():
				ticker.Stop()
				return
			default:
				srv.watch(ctx, ch, catalog, &lastIndex)
				<-ticker.C
			}
		}
	}()
}
func ( d * Discovery ) watchService ( ctx context . Context , ch chan <- [ ] * targetgroup . Group , name string ) { srv := & consulService { discovery : d , client : d . client , name : name , tags : d . watchedTags , labels : model . LabelSet { serviceLabel : model . LabelValue ( name ) , datacenterLabel : model . LabelValue ( d . clientDatacenter ) , } , tagSeparator : d . tagSeparator , logger : d . logger , } go func ( ) { ticker := time . NewTicker ( d . refreshInterval ) var lastIndex uint64 catalog := srv . client . Catalog ( ) for { select { case <- ctx . Done ( ) : ticker . Stop ( ) return default : srv . watch ( ctx , ch , catalog , & lastIndex ) <- ticker . C } } } ( ) }
// Start watching a service.
Start watching a service .