mirror of
https://github.com/c9s/bbgo.git
synced 2024-11-22 23:05:15 +00:00
FIX: add mutex in memory store
This commit is contained in:
parent
dfba758e88
commit
a5e35b4711
|
@ -3,6 +3,7 @@ package service
|
||||||
import (
|
import (
|
||||||
"reflect"
|
"reflect"
|
||||||
"strings"
|
"strings"
|
||||||
|
"sync"
|
||||||
)
|
)
|
||||||
|
|
||||||
type MemoryService struct {
|
type MemoryService struct {
|
||||||
|
@ -26,14 +27,21 @@ func (s *MemoryService) NewStore(id string, subIDs ...string) Store {
|
||||||
type MemoryStore struct {
|
type MemoryStore struct {
|
||||||
Key string
|
Key string
|
||||||
memory *MemoryService
|
memory *MemoryService
|
||||||
|
mu sync.Mutex
|
||||||
}
|
}
|
||||||
|
|
||||||
func (store *MemoryStore) Save(val interface{}) error {
|
func (store *MemoryStore) Save(val interface{}) error {
|
||||||
|
store.mu.Lock()
|
||||||
|
defer store.mu.Unlock()
|
||||||
|
|
||||||
store.memory.Slots[store.Key] = val
|
store.memory.Slots[store.Key] = val
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (store *MemoryStore) Load(val interface{}) error {
|
func (store *MemoryStore) Load(val interface{}) error {
|
||||||
|
store.mu.Lock()
|
||||||
|
defer store.mu.Unlock()
|
||||||
|
|
||||||
v := reflect.ValueOf(val)
|
v := reflect.ValueOf(val)
|
||||||
if data, ok := store.memory.Slots[store.Key]; ok {
|
if data, ok := store.memory.Slots[store.Key]; ok {
|
||||||
dataRV := reflect.ValueOf(data)
|
dataRV := reflect.ValueOf(data)
|
||||||
|
@ -46,6 +54,9 @@ func (store *MemoryStore) Load(val interface{}) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (store *MemoryStore) Reset() error {
|
func (store *MemoryStore) Reset() error {
|
||||||
|
store.mu.Lock()
|
||||||
|
defer store.mu.Unlock()
|
||||||
|
|
||||||
delete(store.memory.Slots, store.Key)
|
delete(store.memory.Slots, store.Key)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user