95 lines
1.6 KiB
Go
95 lines
1.6 KiB
Go
package status
|
|
|
|
import (
|
|
"git.frostfs.info/TrueCloudLab/frostfs-sdk-go/api/rpc/grpc"
|
|
"git.frostfs.info/TrueCloudLab/frostfs-sdk-go/api/rpc/message"
|
|
status "git.frostfs.info/TrueCloudLab/frostfs-sdk-go/api/status/grpc"
|
|
)
|
|
|
|
func (x *Detail) ToGRPCMessage() grpc.Message {
|
|
var m *status.Status_Detail
|
|
|
|
if x != nil {
|
|
m = new(status.Status_Detail)
|
|
|
|
m.SetId(x.id)
|
|
m.SetValue(x.val)
|
|
}
|
|
|
|
return m
|
|
}
|
|
|
|
func (x *Detail) FromGRPCMessage(m grpc.Message) error {
|
|
v, ok := m.(*status.Status_Detail)
|
|
if !ok {
|
|
return message.NewUnexpectedMessageType(m, v)
|
|
}
|
|
|
|
x.id = v.GetId()
|
|
x.val = v.GetValue()
|
|
|
|
return nil
|
|
}
|
|
|
|
func CodeFromGRPC(v uint32) Code {
|
|
return Code(v)
|
|
}
|
|
|
|
func CodeToGRPC(v Code) uint32 {
|
|
return uint32(v)
|
|
}
|
|
|
|
func (x *Status) ToGRPCMessage() grpc.Message {
|
|
var m *status.Status
|
|
|
|
if x != nil {
|
|
m = new(status.Status)
|
|
|
|
m.SetCode(CodeToGRPC(x.code))
|
|
m.SetMessage(x.msg)
|
|
|
|
var ds []status.Status_Detail
|
|
|
|
if ln := len(x.details); ln > 0 {
|
|
ds = make([]status.Status_Detail, 0, ln)
|
|
|
|
for i := range ln {
|
|
ds = append(ds, *x.details[i].ToGRPCMessage().(*status.Status_Detail))
|
|
}
|
|
}
|
|
|
|
m.SetDetails(ds)
|
|
}
|
|
|
|
return m
|
|
}
|
|
|
|
func (x *Status) FromGRPCMessage(m grpc.Message) error {
|
|
v, ok := m.(*status.Status)
|
|
if !ok {
|
|
return message.NewUnexpectedMessageType(m, v)
|
|
}
|
|
|
|
var (
|
|
ds []Detail
|
|
dsV2 = v.GetDetails()
|
|
)
|
|
|
|
if dsV2 != nil {
|
|
ln := len(dsV2)
|
|
|
|
ds = make([]Detail, ln)
|
|
|
|
for i := range ln {
|
|
if err := ds[i].FromGRPCMessage(&dsV2[i]); err != nil {
|
|
return err
|
|
}
|
|
}
|
|
}
|
|
|
|
x.details = ds
|
|
x.msg = v.GetMessage()
|
|
x.code = CodeFromGRPC(v.GetCode())
|
|
|
|
return nil
|
|
}
|