Browse Source

Switch to RWMutex

Tyler Bunnell 12 years ago
parent
commit
dad32f9532
1 changed files with 9 additions and 9 deletions
  1. +9
    -9
      context.go

+ 9
- 9
context.go View File

@ -11,7 +11,7 @@ import (
)
var (
mutex sync.Mutex
mutex sync.RWMutex
data = make(map[*http.Request]map[interface{}]interface{})
datat = make(map[*http.Request]int64)
)
@ -29,8 +29,8 @@ func Set(r *http.Request, key, val interface{}) {
// Get returns a value stored for a given key in a given request.
func Get(r *http.Request, key interface{}) interface{} {
mutex.Lock()
defer mutex.Unlock()
mutex.RLock()
defer mutex.RUnlock()
if data[r] != nil {
return data[r][key]
}
@ -39,8 +39,8 @@ func Get(r *http.Request, key interface{}) interface{} {
// GetOk returns stored value and presence state like multi-value return of map access.
func GetOk(r *http.Request, key interface{}) (interface{}, bool) {
mutex.Lock()
defer mutex.Unlock()
mutex.RLock()
defer mutex.RUnlock()
if _, ok := data[r]; ok {
value, ok := data[r][key]
return value, ok
@ -50,8 +50,8 @@ func GetOk(r *http.Request, key interface{}) (interface{}, bool) {
// GetAll returns all stored values for the request as a map. Nil is returned for invalid requests.
func GetAll(r *http.Request) map[interface{}]interface{} {
mutex.Lock()
defer mutex.Unlock()
mutex.RLock()
defer mutex.RUnlock()
if context, ok := data[r]; ok {
return context
@ -62,8 +62,8 @@ func GetAll(r *http.Request) map[interface{}]interface{} {
// GetAllOk returns all stored values for the request as a map. It returns not
// ok if the request was never registered.
func GetAllOk(r *http.Request) (map[interface{}]interface{}, bool) {
mutex.Lock()
defer mutex.Unlock()
mutex.RLock()
defer mutex.RUnlock()
context, ok := data[r]
return context, ok


Loading…
Cancel
Save