func()

in client/sessionpool.go [72:94]


func (spool *SessionPool) GetSession() (session Session, err error) {
	for {
		select {
		case spool.sem <- 1:
			select {
			case session, ok := <-spool.ch:
				if ok {
					return session, nil
				} else {
					log.Println("sessionPool has closed")
					return session, errPoolClosed
				}
			default:
				config := spool.config
				session, err := spool.ConstructSession(config)
				return session, err
			}
		case <-time.After(time.Millisecond * time.Duration(spool.waitToGetSessionTimeoutInMs)):
			log.Println("get session timeout")
			return session, errTimeout
		}
	}
}