frostfs-api-go/status/marshal.go
Airat Arifullin 443098cb28
Some checks failed
DCO action / DCO (pull_request) Successful in 48s
Tests and linters / Tests (1.19) (pull_request) Failing after 59s
Tests and linters / Tests with -race (pull_request) Successful in 1m31s
Tests and linters / Tests (1.20) (pull_request) Failing after 5m52s
Tests and linters / Lint (pull_request) Successful in 7m3s
[#50] marshal: Use protowire append methods for marshalers
* Use protowire.AppendTag to encode a tag and append it
* Use protowire.AppendVarint to append numeric data
* Use protowire.AppendBytes and protowire.AppendString

Signed-off-by: Airat Arifullin <a.arifullin@yadro.com>
2023-08-31 12:12:43 +03:00

92 lines
1.8 KiB
Go

package status
import (
"git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/rpc/message"
status "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/status/grpc"
protoutil "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/util/proto"
)
const (
_ = iota
detailIDFNum
detailValueFNum
)
func (x *Detail) StableMarshal(buf []byte) []byte {
if x == nil {
return []byte{}
}
if buf == nil {
buf = make([]byte, 0, x.StableSize())
}
var offset int
buf = protoutil.UInt32Marshal(detailIDFNum, buf[offset:], x.id)
buf = protoutil.BytesMarshal(detailValueFNum, buf[offset:], x.val)
return buf
}
func (x *Detail) StableSize() (size int) {
if x == nil {
return 0
}
size += protoutil.UInt32Size(detailIDFNum, x.id)
size += protoutil.BytesSize(detailValueFNum, x.val)
return size
}
func (x *Detail) Unmarshal(data []byte) error {
return message.Unmarshal(x, data, new(status.Status_Detail))
}
const (
_ = iota
statusCodeFNum
statusMsgFNum
statusDetailsFNum
)
func (x *Status) StableMarshal(buf []byte) []byte {
if x == nil {
return []byte{}
}
if buf == nil {
buf = make([]byte, 0, x.StableSize())
}
var offset int
buf = protoutil.UInt32Marshal(statusCodeFNum, buf[offset:], CodeToGRPC(x.code))
buf = protoutil.StringMarshal(statusMsgFNum, buf[offset:], x.msg)
for i := range x.details {
buf = protoutil.NestedStructureMarshal(statusDetailsFNum, buf[offset:], &x.details[i])
}
return buf
}
func (x *Status) StableSize() (size int) {
if x == nil {
return 0
}
size += protoutil.UInt32Size(statusCodeFNum, CodeToGRPC(x.code))
size += protoutil.StringSize(statusMsgFNum, x.msg)
for i := range x.details {
size += protoutil.NestedStructureSize(statusDetailsFNum, &x.details[i])
}
return size
}
func (x *Status) Unmarshal(data []byte) error {
return message.Unmarshal(x, data, new(status.Status))
}