// 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_ }