1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- // package msg_net -- сетевые сообщения
- package msg_net
- import (
- "encoding/json"
- "fmt"
- "git.p78su.freemyip.com/svi/gostore/pkg/types"
- )
- // Читает значение из анонимного хранилища
- type MsgFindRequest struct {
- Key_ string `json:"key" form:"key"` // Ключ для поиска в хранилище (запрос)
- Values_ []string `json:"values" form:"val"` // Ключи в хранилище по префиксу (ответ)
- }
- // NewFindRequest -- создание запроса на поиск
- func NewFindRequest(key string) (types.IFindRequest, error) {
- if key == "" {
- return nil, fmt.Errorf("NewFindRequest(): key is empty")
- }
- sf := &MsgFindRequest{
- Key_: key,
- Values_: []string{},
- }
- return sf, nil
- }
- // UnmarshalFindRequest -- десериализация
- func UnmarshalFindRequest(key string, binData []byte) (types.IFindRequest, error) {
- sf := &MsgFindRequest{}
- err := json.Unmarshal(binData, sf)
- if err != nil {
- return nil, fmt.Errorf("Unmarshal(): in JSON decode, err=\n\t%w", err)
- }
- if sf.Key_ != key {
- return nil, fmt.Errorf("Unmarshal(): key mismatch(%q, key=%q)", sf.Key_, key)
- }
- return sf, nil
- }
- // Marshal -- сериализация
- func (sf *MsgFindRequest) Marshal() []byte {
- binData, _ := json.MarshalIndent(sf, "", " ")
- return binData
- }
- // Values -- возвращает список ключей по префиксу
- func (sf *MsgFindRequest) Values() []string {
- return sf.Values_
- }
- // Key -- возвращает ключ запроса
- func (sf *MsgFindRequest) Key() string {
- return sf.Key_
- }
|