func NewDiscovery(
	srvs []string,
	timeout time.Duration,
	paths []string,
	logger log.Logger,
	pf func(data []byte, path string) (model.LabelSet, error),
) (*Discovery, error) {
	if logger == nil {
		logger = log.NewNopLogger()
	}

	conn, _, err := zk.Connect(
		srvs, timeout,
		func(c *zk.Conn) {
			c.SetLogger(treecache.NewZookeeperLogger(logger))
		})
	if err != nil {
		return nil, err
	}
	updates := make(chan treecache.ZookeeperTreeCacheEvent)
	sd := &Discovery{
		conn:    conn,
		updates: updates,
		sources: map[string]*targetgroup.Group{},
		parse:   pf,
		logger:  logger,
	}
	for _, path := range paths {
		sd.treeCaches = append(sd.treeCaches, treecache.NewZookeeperTreeCache(conn, path, updates, logger))
	}
	return sd, nil
}
func NewDiscovery(
	srvs []string,
	timeout time.Duration,
	paths []string,
	logger log.Logger,
	pf func(data []byte, path string) (model.LabelSet, error),
) (*Discovery, error) {
	if logger == nil {
		logger = log.NewNopLogger()
	}

	conn, _, err := zk.Connect(
		srvs, timeout,
		func(c *zk.Conn) {
			c.SetLogger(treecache.NewZookeeperLogger(logger))
		})
	if err != nil {
		return nil, err
	}
	updates := make(chan treecache.ZookeeperTreeCacheEvent)
	sd := &Discovery{
		conn:    conn,
		updates: updates,
		sources: map[string]*targetgroup.Group{},
		parse:   pf,
		logger:  logger,
	}
	for _, path := range paths {
		sd.treeCaches = append(sd.treeCaches, treecache.NewZookeeperTreeCache(conn, path, updates, logger))
	}
	return sd, nil
}
func NewDiscovery ( srvs [ ] string , timeout time . Duration , paths [ ] string , logger log . Logger , pf func ( data [ ] byte , path string ) ( model . LabelSet , error ) , ) ( * Discovery , error ) { if logger == nil { logger = log . NewNopLogger ( ) } conn , _ , err := zk . Connect ( srvs , timeout , func ( c * zk . Conn ) { c . SetLogger ( treecache . NewZookeeperLogger ( logger ) ) } ) if err != nil { return nil , err } updates := make ( chan treecache . ZookeeperTreeCacheEvent ) sd := & Discovery { conn : conn , updates : updates , sources : map [ string ] * targetgroup . Group { } , parse : pf , logger : logger , } for _ , path := range paths { sd . treeCaches = append ( sd . treeCaches , treecache . NewZookeeperTreeCache ( conn , path , updates , logger ) ) } return sd , nil }
// NewDiscovery returns a new discovery along Zookeeper parses with
// the given parse function.
NewDiscovery returns a new discovery along Zookeeper parses with the given parse function .