github.com/inklabsfoundation/inkchain@v0.17.1-0.20181025012015-c3cef8062f19/core/ledger/kvledger/txmgmt/transutil/transet_builder.go (about)

     1  package transutil
     2  
     3  import (
     4  	"fmt"
     5  
     6  	"github.com/inklabsfoundation/inkchain/common/flogging"
     7  	"github.com/inklabsfoundation/inkchain/core/ledger/util"
     8  	"github.com/inklabsfoundation/inkchain/protos/ledger/transet"
     9  	"github.com/inklabsfoundation/inkchain/protos/ledger/transet/kvtranset"
    10  )
    11  
    12  type TranSetBuilder struct {
    13  	from    string
    14  	fromVer *transet.Version
    15  	toSet   map[string]*kvtranset.KVTrans
    16  }
    17  
    18  func NewTranSetBuilder() *TranSetBuilder {
    19  	return &TranSetBuilder{"", nil, make(map[string]*kvtranset.KVTrans)}
    20  }
    21  
    22  var logger = flogging.MustGetLogger("transutil")
    23  
    24  func (builder *TranSetBuilder) AddToTranSet(to string, balanceType string, amount []byte) {
    25  	builder.toSet[to] = NewTranSet(to, balanceType, amount)
    26  }
    27  
    28  func (builder *TranSetBuilder) SetSender(sender string, version *transet.Version) {
    29  	if sender == "" {
    30  		fmt.Println("fatal: empty sender")
    31  		return
    32  	}
    33  	if builder.from == "" {
    34  		builder.from = sender
    35  	} else if builder.from != sender {
    36  		panic("fatal: multiple sender in one transaction!")
    37  		return
    38  	}
    39  	builder.fromVer = version
    40  }
    41  
    42  func (builder *TranSetBuilder) GetTranSet() *TranSet {
    43  	tranSet := &TranSet{}
    44  	//from
    45  	tranSet.From = builder.from
    46  	tranSet.FromVer = builder.fromVer
    47  	//transferSet
    48  	var trans []*kvtranset.KVTrans
    49  	sortedTransKeys := util.GetSortedKeys(builder.toSet)
    50  	for _, key := range sortedTransKeys {
    51  		trans = append(trans, builder.toSet[key])
    52  	}
    53  	kvTrans := &kvtranset.KVTranSet{Trans: trans}
    54  	tranSet.KvTranSet = kvTrans
    55  	return tranSet
    56  }