master v1.0.0
兔子 4 years ago
parent cf28620949
commit 4bf0637e04

@ -2,6 +2,35 @@ package starmap
import "errors" import "errors"
func (stack *StarStack) Count() int {
stack.kvPushmu.Lock()
defer stack.kvPushmu.Unlock()
return len(stack.kvStack)
}
func (stack *StarStack) Push(val interface{}) error {
stack.kvPushmu.Lock()
defer stack.kvPushmu.Unlock()
stack.kvStack = append(stack.kvStack, val)
return nil
}
func (stack *StarStack) Pop() (interface{}, error) {
stack.kvPushmu.Lock()
defer stack.kvPushmu.Unlock()
if len(stack.kvStack) == 0 {
return nil, errors.New("Empty Stacks")
}
val := stack.kvStack[0]
stack.kvStack = stack.kvStack[1:]
return val, nil
}
func (stack *StarStack) MustPop() interface{} {
val, _ := stack.Pop()
return val
}
func Get(key string) (interface{}, error) { func Get(key string) (interface{}, error) {
var err error var err error
kvmu.RLock() kvmu.RLock()
@ -13,6 +42,11 @@ func Get(key string) (interface{}, error) {
return data, err return data, err
} }
func MustGet(key string) interface{} {
result, _ := Get(key)
return result
}
func Store(key string, value interface{}) error { func Store(key string, value interface{}) error {
kvmu.Lock() kvmu.Lock()
defer kvmu.Unlock() defer kvmu.Unlock()

@ -15,6 +15,12 @@ func (kv *RemoteKv) clientOnline() error {
} }
return nil return nil
} }
func (kv *RemoteKv) MustGet(key string) interface{} {
result, _ := kv.Get(key)
return result
}
func (kv *RemoteKv) Get(key string) (interface{}, error) { func (kv *RemoteKv) Get(key string) (interface{}, error) {
kv.kvmu.Lock() kv.kvmu.Lock()
defer kv.kvmu.Unlock() defer kv.kvmu.Unlock()

@ -7,6 +7,11 @@ var kvmu sync.RWMutex
var kvMapPro map[string]StarMap var kvMapPro map[string]StarMap
var kvmuPro sync.RWMutex var kvmuPro sync.RWMutex
type StarStack struct {
kvPushmu sync.RWMutex
kvStack []interface{}
}
func init() { func init() {
kvMap = make(map[string]interface{}) kvMap = make(map[string]interface{})
kvMapPro = make(map[string]StarMap) kvMapPro = make(map[string]StarMap)

Loading…
Cancel
Save