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  }