コード例 #1
0
ファイル: pools.go プロジェクト: nimishzynga/go-couchbase
func (b Bucket) getConnPools() []*connectionPool {
	if b.connPools != nil {
		return *(*[]*connectionPool)(atomic.LoadPointer(&b.connPools))
	} else {
		return nil
	}
}
コード例 #2
0
ファイル: streaming.go プロジェクト: nimishzynga/go-couchbase
// this version of replaceConnPools will not close the pools that are being reused
func (b *Bucket) replaceConnPools2(with []*connectionPool) {
	for {
		old := atomic.LoadPointer(&b.connPools)
		if atomic.CompareAndSwapPointer(&b.connPools, old, unsafe.Pointer(&with)) {
			if old != nil {
				for _, pool := range *(*[]*connectionPool)(old) {
					if pool != nil && pool.inUse == false {
						pool.Close()
					}
				}
			}
			return
		}
	}
}
コード例 #3
0
ファイル: pools.go プロジェクト: nimishzynga/go-couchbase
// Nodes returns teh current list of nodes servicing this bucket.
func (b Bucket) Nodes() []Node {
	return *(*[]Node)(atomic.LoadPointer(&b.nodeList))
}
コード例 #4
0
ファイル: pools.go プロジェクト: nimishzynga/go-couchbase
// VBServerMap returns the current VBucketServerMap.
func (b *Bucket) VBServerMap() *VBucketServerMap {
	return (*VBucketServerMap)(atomic.LoadPointer(&(b.vBucketServerMap)))
}
コード例 #5
0
ファイル: pools.go プロジェクト: ryanslade/go-couchbase
func (b Bucket) getConnPools() []*connectionPool {
	return *(*[]*connectionPool)(atomic.LoadPointer(&b.connPools))
}
コード例 #6
0
ファイル: pools.go プロジェクト: ryanslade/go-couchbase
// Nodes returns teh current list of nodes servicing this bucket.
func (b Bucket) Nodes() []Node {
	b.nodeListLock.RLock()
	defer b.nodeListLock.RUnlock()
	return *(*[]Node)(atomic.LoadPointer(&b.nodeList))
}