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