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 }