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 ( var (
mutex sync.Mutex
mutex sync.RWMutex
data = make(map[*http.Request]map[interface{}]interface{}) data = make(map[*http.Request]map[interface{}]interface{})
datat = make(map[*http.Request]int64) 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. // Get returns a value stored for a given key in a given request.
func Get(r *http.Request, key interface{}) interface{} { func Get(r *http.Request, key interface{}) interface{} {
mutex.Lock()
defer mutex.Unlock()
mutex.RLock()
defer mutex.RUnlock()
if data[r] != nil { if data[r] != nil {
return data[r][key] 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. // GetOk returns stored value and presence state like multi-value return of map access.
func GetOk(r *http.Request, key interface{}) (interface{}, bool) { func GetOk(r *http.Request, key interface{}) (interface{}, bool) {
mutex.Lock()
defer mutex.Unlock()
mutex.RLock()
defer mutex.RUnlock()
if _, ok := data[r]; ok { if _, ok := data[r]; ok {
value, ok := data[r][key] value, ok := data[r][key]
return value, ok 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. // 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{} { func GetAll(r *http.Request) map[interface{}]interface{} {
mutex.Lock()
defer mutex.Unlock()
mutex.RLock()
defer mutex.RUnlock()
if context, ok := data[r]; ok { if context, ok := data[r]; ok {
return context 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 // GetAllOk returns all stored values for the request as a map. It returns not
// ok if the request was never registered. // ok if the request was never registered.
func GetAllOk(r *http.Request) (map[interface{}]interface{}, bool) { func GetAllOk(r *http.Request) (map[interface{}]interface{}, bool) {
mutex.Lock()
defer mutex.Unlock()
mutex.RLock()
defer mutex.RUnlock()
context, ok := data[r] context, ok := data[r]
return context, ok return context, ok


Loading…
Cancel
Save