github.com/inklabsfoundation/inkchain@v0.17.1-0.20181025012015-c3cef8062f19/core/ledger/kvledger/txmgmt/ledgerutil/ledger_proto_util.go (about) 1 package ledgerutil 2 3 import ( 4 "github.com/golang/protobuf/proto" 5 "github.com/inklabsfoundation/inkchain/core/ledger/kvledger/txmgmt/rwsetutil" 6 "github.com/inklabsfoundation/inkchain/core/ledger/kvledger/txmgmt/transutil" 7 "github.com/inklabsfoundation/inkchain/protos/ledger" 8 ) 9 10 type LedgerSet struct { 11 TranSet *transutil.TranSet 12 TxRwSet *rwsetutil.TxRwSet 13 } 14 15 func (ledgerSet *LedgerSet) ToProtoBytes() ([]byte, error) { 16 protoLedgerSet := &ledger.LedgerSet{} 17 var err error 18 protoLedgerSet.Transet, err = ledgerSet.TranSet.ToProtoBytes() 19 if err != nil { 20 return nil, err 21 } 22 23 protoLedgerSet.Txrwset, err = ledgerSet.TxRwSet.ToProtoBytes() 24 if err != nil { 25 return nil, err 26 } 27 protoLedgerSetBytes, err := proto.Marshal(protoLedgerSet) 28 return protoLedgerSetBytes, nil 29 } 30 31 func (ledgerSet *LedgerSet) FromProtoBytes(protoBytes []byte) error { 32 var err error 33 protoLedgerSet := &ledger.LedgerSet{} 34 if err = proto.Unmarshal(protoBytes, protoLedgerSet); err != nil { 35 return err 36 } 37 if protoLedgerSet.Transet != nil { 38 ledgerSet.TranSet = &transutil.TranSet{} 39 err = ledgerSet.TranSet.FromProtoBytes(protoLedgerSet.Transet) 40 if err != nil { 41 return err 42 } 43 if ledgerSet.TranSet.From == "" { 44 ledgerSet.TranSet = nil 45 } 46 } else { 47 ledgerSet.TranSet = nil 48 } 49 50 ledgerSet.TxRwSet = &rwsetutil.TxRwSet{} 51 err = ledgerSet.TxRwSet.FromProtoBytes(protoLedgerSet.Txrwset) 52 if err != nil { 53 return err 54 } 55 return nil 56 }