33 lines
511 B
Go
33 lines
511 B
Go
|
package memstore
|
||
|
|
||
|
import (
|
||
|
"sync"
|
||
|
)
|
||
|
|
||
|
type Bucket interface {
|
||
|
Set(string, interface{})
|
||
|
Get(string) interface{}
|
||
|
Values() map[string]interface{}
|
||
|
}
|
||
|
|
||
|
type bucket struct {
|
||
|
m *sync.RWMutex
|
||
|
values map[string]interface{}
|
||
|
}
|
||
|
|
||
|
func (b bucket) Set(key string, value interface{}) {
|
||
|
b.m.Lock()
|
||
|
defer b.m.Unlock()
|
||
|
b.values[key] = value
|
||
|
}
|
||
|
|
||
|
func (b bucket) Get(key string) interface{} {
|
||
|
b.m.RLock()
|
||
|
defer b.m.RUnlock()
|
||
|
return b.values[key]
|
||
|
}
|
||
|
|
||
|
func (b bucket) Values() map[string]interface{} {
|
||
|
return b.values
|
||
|
}
|