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 }
// 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 }
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 }
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) }