starmap/client_basicrw.go

97 lines
1.8 KiB
Go
Raw Normal View History

2020-07-20 11:24:42 +08:00
package starmap
import (
"b612.me/notify"
2020-07-20 11:24:42 +08:00
)
func (kv *RemoteKv) clientOnline() error {
return kv.reconnect()
2020-07-20 11:24:42 +08:00
}
2020-10-22 16:44:48 +08:00
func (kv *RemoteKv) MustGet(key string) interface{} {
result, _ := kv.Get(key)
return result
}
func (kv *RemoteKv) Get(key interface{}) (interface{}, error) {
2020-07-20 11:24:42 +08:00
if err := kv.clientOnline(); err != nil {
return nil, err
}
keyCode, err := notify.ToMsgVal(key)
2020-07-20 11:24:42 +08:00
if err != nil {
return nil, err
}
data, err := kv.client.SendWait("get", keyCode, kv.readTimeout)
2020-07-20 11:24:42 +08:00
if err != nil {
return nil, err
}
rp, err := data.Value.ToInterface()
if err != nil {
return nil, err
2020-07-20 11:24:42 +08:00
}
reply := rp.(kvMsg)
return reply.Value, reply.Err
2020-07-20 11:24:42 +08:00
}
func (kv *RemoteKv) Store(key interface{}, value interface{}) error {
2020-07-20 11:24:42 +08:00
if err := kv.clientOnline(); err != nil {
return err
}
encodeData, err := notify.ToMsgVal(kvMsg{
Key: key,
Value: value,
Err: nil,
})
2020-07-20 11:24:42 +08:00
if err != nil {
return err
}
data, err := kv.client.SendWait("store", encodeData, kv.readTimeout)
2020-07-20 11:24:42 +08:00
if err != nil {
return err
}
rp, err := data.Value.ToInterface()
if err != nil {
return err
2020-07-20 11:24:42 +08:00
}
return rp.(kvMsg).Err
2020-07-20 11:24:42 +08:00
}
func (kv *RemoteKv) Delete(key interface{}) error {
2020-07-20 11:24:42 +08:00
if err := kv.clientOnline(); err != nil {
return err
}
keyCode, err := notify.ToMsgVal(key)
2020-07-20 11:24:42 +08:00
if err != nil {
return err
}
data, err := kv.client.SendWait("delete", keyCode, kv.readTimeout)
if err != nil {
return err
2020-07-20 11:24:42 +08:00
}
rp, err := data.Value.ToInterface()
if err != nil {
return err
}
return rp.(kvMsg).Err
2020-07-20 11:24:42 +08:00
}
func (kv *RemoteKv) Exists(key interface{}) bool {
if err := kv.clientOnline(); err != nil {
return false
}
keyCode, err := notify.ToMsgVal(key)
if err != nil {
return false
}
data, err := kv.client.SendWait("exists", keyCode, kv.readTimeout)
if err != nil {
return false
}
rp, err := data.Value.ToInterface()
if err != nil {
return false
2020-07-20 11:24:42 +08:00
}
reply := rp.(kvMsg)
return reply.Value.(bool)
2020-07-20 11:24:42 +08:00
}