コード例 #1
0
ファイル: cli.go プロジェクト: RivenZoo/goutil
func (cli *ZKClient) Connect() error {
	conn, session, err := zk.ConnectWithDialer(cli.Servers, cli.SessionTimeout, cli.Dialer)
	if err != nil {
		return err
	}
	cli.connLock.Lock()
	cli.conn = conn
	cli.connLock.Unlock()

	sched := make(chan struct{})
	go func() {
		close(sched)
		for e := range session {
			if e.State == zk.StateDisconnected {
				log.Error("session disconnected, event:%s", e)
			} else if e.State == zk.StateHasSession {
				log.Debug("session build, event:%s", e)
				cli.fnLock.RLock()
				fn := cli.fnOnSessionBuild
				cli.fnLock.RUnlock()
				if fn != nil {
					fn(cli)
				}
			} else {
				log.Debug("session recv event:%s", e)
			}
		}
		log.Info("session channel closed")
	}()
	<-sched
	return nil
}
コード例 #2
0
ファイル: zookeeper.go プロジェクト: dzch/kafka-http-wrapper
// connect zk and do eventloop
func (z *Zookeeper) initConn() error {
	var err error
	z.zkConn, z.zkEventChan, err = zk.ConnectWithDialer(z.cc.zkHosts, z.cc.zkSessionTimeout, z.zkDialer)
	if err != nil {
		return err
	}
	z.zkConn.SetLogger(fakeLogger)
	return nil
}
コード例 #3
0
ファイル: redis_ha.go プロジェクト: idlecloud/redishazk
func ZKConnect() *zk.Conn {
	zks := strings.Split(gZKSrv, ",")
	conn, _, err := zk.ConnectWithDialer(zks, time.Second, ZKDial)

	if err != nil {
		log.Errorf("Zookeeper connect error=%s", err.Error())
		return nil
	}
	return conn
}
コード例 #4
0
ファイル: client.go プロジェクト: foursquare/curator.go
func (d *DefaultZookeeperDialer) Dial(connString string, sessionTimeout time.Duration, canBeReadOnly bool) (ZookeeperConnection, <-chan zk.Event, error) {
	return zk.ConnectWithDialer(strings.Split(connString, ","), sessionTimeout, d.Dialer)
}