package starmap import ( "b612.me/notify" ) func (kv *RemoteKv) clientOnline() error { return kv.reconnect() } func (kv *RemoteKv) MustGet(key string) interface{} { result, _ := kv.Get(key) return result } func (kv *RemoteKv) Get(key interface{}) (interface{}, error) { if err := kv.clientOnline(); err != nil { return nil, err } keyCode, err := notify.ToMsgVal(key) if err != nil { return nil, err } data, err := kv.client.SendWait("get", keyCode, kv.readTimeout) if err != nil { return nil, err } rp, err := data.Value.ToInterface() if err != nil { return nil, err } reply := rp.(kvMsg) return reply.Value, reply.Err } func (kv *RemoteKv) Store(key interface{}, value interface{}) error { if err := kv.clientOnline(); err != nil { return err } encodeData, err := notify.ToMsgVal(kvMsg{ Key: key, Value: value, Err: nil, }) if err != nil { return err } data, err := kv.client.SendWait("store", encodeData, kv.readTimeout) if err != nil { return err } rp, err := data.Value.ToInterface() if err != nil { return err } return rp.(kvMsg).Err } func (kv *RemoteKv) Delete(key interface{}) error { if err := kv.clientOnline(); err != nil { return err } keyCode, err := notify.ToMsgVal(key) if err != nil { return err } data, err := kv.client.SendWait("delete", keyCode, kv.readTimeout) if err != nil { return err } rp, err := data.Value.ToInterface() if err != nil { return err } return rp.(kvMsg).Err } 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 } reply := rp.(kvMsg) return reply.Value.(bool) }