github.com/TrueCloudLab/frostfs-api-go/v2@v2.0.0-20230228134343-196241c4e79a/storagegroup/convert.go (about)

     1  package storagegroup
     2  
     3  import (
     4  	"github.com/TrueCloudLab/frostfs-api-go/v2/refs"
     5  	refsGRPC "github.com/TrueCloudLab/frostfs-api-go/v2/refs/grpc"
     6  	"github.com/TrueCloudLab/frostfs-api-go/v2/rpc/grpc"
     7  	"github.com/TrueCloudLab/frostfs-api-go/v2/rpc/message"
     8  	sg "github.com/TrueCloudLab/frostfs-api-go/v2/storagegroup/grpc"
     9  )
    10  
    11  func (s *StorageGroup) ToGRPCMessage() grpc.Message {
    12  	m := new(sg.StorageGroup)
    13  
    14  	if s != nil {
    15  		m = new(sg.StorageGroup)
    16  
    17  		m.SetMembers(refs.ObjectIDListToGRPCMessage(s.members))
    18  		//nolint:staticcheck
    19  		m.SetExpirationEpoch(s.exp)
    20  		m.SetValidationDataSize(s.size)
    21  		m.SetValidationHash(s.hash.ToGRPCMessage().(*refsGRPC.Checksum))
    22  	}
    23  
    24  	return m
    25  }
    26  
    27  func (s *StorageGroup) FromGRPCMessage(m grpc.Message) error {
    28  	v, ok := m.(*sg.StorageGroup)
    29  	if !ok {
    30  		return message.NewUnexpectedMessageType(m, v)
    31  	}
    32  
    33  	var err error
    34  
    35  	hash := v.GetValidationHash()
    36  	if hash == nil {
    37  		s.hash = nil
    38  	} else {
    39  		if s.hash == nil {
    40  			s.hash = new(refs.Checksum)
    41  		}
    42  
    43  		err = s.hash.FromGRPCMessage(hash)
    44  		if err != nil {
    45  			return err
    46  		}
    47  	}
    48  
    49  	s.members, err = refs.ObjectIDListFromGRPCMessage(v.GetMembers())
    50  	if err != nil {
    51  		return err
    52  	}
    53  
    54  	//nolint:staticcheck
    55  	s.exp = v.GetExpirationEpoch()
    56  	s.size = v.GetValidationDataSize()
    57  
    58  	return nil
    59  }