Пример #1
0
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
// 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
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
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)
}