29 lines
452 B
Go
29 lines
452 B
Go
|
// +build !go1.4
|
||
|
|
||
|
package ldap
|
||
|
|
||
|
import (
|
||
|
"sync"
|
||
|
)
|
||
|
|
||
|
// This is a helper type that emulates the use of the "sync/atomic.Value"
|
||
|
// struct that's available in Go 1.4 and up.
|
||
|
type atomicValue struct {
|
||
|
value interface{}
|
||
|
lock sync.RWMutex
|
||
|
}
|
||
|
|
||
|
func (av *atomicValue) Store(val interface{}) {
|
||
|
av.lock.Lock()
|
||
|
av.value = val
|
||
|
av.lock.Unlock()
|
||
|
}
|
||
|
|
||
|
func (av *atomicValue) Load() interface{} {
|
||
|
av.lock.RLock()
|
||
|
ret := av.value
|
||
|
av.lock.RUnlock()
|
||
|
|
||
|
return ret
|
||
|
}
|