github.com/TrueCloudLab/frostfs-api-go/v2@v2.0.0-20230228134343-196241c4e79a/status/convert.go (about) 1 package status 2 3 import ( 4 "github.com/TrueCloudLab/frostfs-api-go/v2/rpc/grpc" 5 "github.com/TrueCloudLab/frostfs-api-go/v2/rpc/message" 6 status "github.com/TrueCloudLab/frostfs-api-go/v2/status/grpc" 7 ) 8 9 func (x *Detail) ToGRPCMessage() grpc.Message { 10 var m *status.Status_Detail 11 12 if x != nil { 13 m = new(status.Status_Detail) 14 15 m.SetId(x.id) 16 m.SetValue(x.val) 17 } 18 19 return m 20 } 21 22 func (x *Detail) FromGRPCMessage(m grpc.Message) error { 23 v, ok := m.(*status.Status_Detail) 24 if !ok { 25 return message.NewUnexpectedMessageType(m, v) 26 } 27 28 x.id = v.GetId() 29 x.val = v.GetValue() 30 31 return nil 32 } 33 34 func CodeFromGRPC(v uint32) Code { 35 return Code(v) 36 } 37 38 func CodeToGRPC(v Code) uint32 { 39 return uint32(v) 40 } 41 42 func (x *Status) ToGRPCMessage() grpc.Message { 43 var m *status.Status 44 45 if x != nil { 46 m = new(status.Status) 47 48 m.SetCode(CodeToGRPC(x.code)) 49 m.SetMessage(x.msg) 50 51 var ds []*status.Status_Detail 52 53 if ln := len(x.details); ln > 0 { 54 ds = make([]*status.Status_Detail, 0, ln) 55 56 for i := 0; i < ln; i++ { 57 ds = append(ds, x.details[i].ToGRPCMessage().(*status.Status_Detail)) 58 } 59 } 60 61 m.SetDetails(ds) 62 } 63 64 return m 65 } 66 67 func (x *Status) FromGRPCMessage(m grpc.Message) error { 68 v, ok := m.(*status.Status) 69 if !ok { 70 return message.NewUnexpectedMessageType(m, v) 71 } 72 73 var ( 74 ds []Detail 75 dsV2 = v.GetDetails() 76 ) 77 78 if dsV2 != nil { 79 ln := len(dsV2) 80 81 ds = make([]Detail, ln) 82 83 for i := 0; i < ln; i++ { 84 if dsV2[i] != nil { 85 if err := ds[i].FromGRPCMessage(dsV2[i]); err != nil { 86 return err 87 } 88 } 89 } 90 } 91 92 x.details = ds 93 x.msg = v.GetMessage() 94 x.code = CodeFromGRPC(v.GetCode()) 95 96 return nil 97 }