github.com/hechain20/hechain@v0.0.0-20220316014945-b544036ba106/core/ledger/kvledger/txmgmt/statemetadata/metadata.go (about)

     1  /*
     2  Copyright hechain. All Rights Reserved.
     3  
     4  SPDX-License-Identifier: Apache-2.0
     5  */
     6  
     7  package statemetadata
     8  
     9  import (
    10  	"github.com/golang/protobuf/proto"
    11  	"github.com/hyperledger/fabric-protos-go/ledger/rwset/kvrwset"
    12  )
    13  
    14  // Serialize serializes metadata entries for storing in statedb
    15  func Serialize(metadataEntries []*kvrwset.KVMetadataEntry) ([]byte, error) {
    16  	metadata := &kvrwset.KVMetadataWrite{Entries: metadataEntries}
    17  	return proto.Marshal(metadata)
    18  }
    19  
    20  // Deserialize deserializes metadata bytes from statedb
    21  func Deserialize(metadataBytes []byte) (map[string][]byte, error) {
    22  	if metadataBytes == nil {
    23  		return nil, nil
    24  	}
    25  	metadata := &kvrwset.KVMetadataWrite{}
    26  	if err := proto.Unmarshal(metadataBytes, metadata); err != nil {
    27  		return nil, err
    28  	}
    29  	m := make(map[string][]byte, len(metadata.Entries))
    30  	for _, metadataEntry := range metadata.Entries {
    31  		m[metadataEntry.Name] = metadataEntry.Value
    32  	}
    33  	return m, nil
    34  }