github.com/Finschia/finschia-sdk@v0.48.1/snapshots/types/convert.go (about)

     1  package types
     2  
     3  import (
     4  	proto "github.com/gogo/protobuf/proto"
     5  	abci "github.com/tendermint/tendermint/abci/types"
     6  
     7  	sdkerrors "github.com/Finschia/finschia-sdk/types/errors"
     8  )
     9  
    10  // Converts an ABCI snapshot to a snapshot. Mainly to decode the SDK metadata.
    11  func SnapshotFromABCI(in *abci.Snapshot) (Snapshot, error) {
    12  	snapshot := Snapshot{
    13  		Height: in.Height,
    14  		Format: in.Format,
    15  		Chunks: in.Chunks,
    16  		Hash:   in.Hash,
    17  	}
    18  	err := proto.Unmarshal(in.Metadata, &snapshot.Metadata)
    19  	if err != nil {
    20  		return Snapshot{}, sdkerrors.Wrap(err, "failed to unmarshal snapshot metadata")
    21  	}
    22  	return snapshot, nil
    23  }
    24  
    25  // Converts a Snapshot to its ABCI representation. Mainly to encode the SDK metadata.
    26  func (s Snapshot) ToABCI() (abci.Snapshot, error) {
    27  	out := abci.Snapshot{
    28  		Height: s.Height,
    29  		Format: s.Format,
    30  		Chunks: s.Chunks,
    31  		Hash:   s.Hash,
    32  	}
    33  	var err error
    34  	out.Metadata, err = proto.Marshal(&s.Metadata)
    35  	if err != nil {
    36  		return abci.Snapshot{}, sdkerrors.Wrap(err, "failed to marshal snapshot metadata")
    37  	}
    38  	return out, nil
    39  }