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  }