本文整理汇总了Golang中goshawkdb/io/common/capnp.Txn.Allocations方法的典型用法代码示例。如果您正苦于以下问题:Golang Txn.Allocations方法的具体用法?Golang Txn.Allocations怎么用?Golang Txn.Allocations使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类goshawkdb/io/common/capnp.Txn
的用法示例。
在下文中一共展示了Txn.Allocations方法的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: TxnFromCap
func TxnFromCap(exe *dispatcher.Executor, vd *VarDispatcher, stateChange TxnLocalStateChange, ourRMId common.RMId, txnCap *msgs.Txn) *Txn {
txnId := common.MakeTxnId(txnCap.Id())
actions := txnCap.Actions()
txn := &Txn{
Id: txnId,
Retry: txnCap.Retry(),
writes: make([]*common.VarUUId, 0, actions.Len()),
TxnCap: txnCap,
exe: exe,
vd: vd,
stateChange: stateChange,
}
allocations := txnCap.Allocations()
for idx, l := 0, allocations.Len(); idx < l; idx++ {
alloc := allocations.At(idx)
rmId := common.RMId(alloc.RmId())
if ourRMId == rmId {
txn.populate(alloc.ActionIndices(), actions)
break
}
}
return txn
}
示例2: NewProposal
func NewProposal(pm *ProposerManager, txnId *common.TxnId, txn *msgs.Txn, fInc int, ballots []*eng.Ballot, instanceRMId common.RMId, acceptors []common.RMId, skipPhase1 bool) *proposal {
allocs := txn.Allocations()
activeRMIds := make(map[common.RMId]uint32, allocs.Len())
for idx, l := 0, allocs.Len(); idx < l; idx++ {
alloc := allocs.At(idx)
bootCount := alloc.Active()
if bootCount == 0 {
break
}
rmId := common.RMId(alloc.RmId())
activeRMIds[rmId] = bootCount
}
p := &proposal{
proposerManager: pm,
instanceRMId: instanceRMId,
acceptors: acceptors,
activeRMIds: activeRMIds,
fInc: fInc,
txn: txn,
txnId: txnId,
skipPhase1: skipPhase1,
instances: make(map[common.VarUUId]*proposalInstance, len(ballots)),
pending: make([]*proposalInstance, 0, len(ballots)),
finished: false,
}
for _, ballot := range ballots {
pi := newProposalInstance(p, ballot)
p.instances[*ballot.VarUUId] = pi
pi.init()
pi.start()
}
return p
}
示例3: deflateTxn
func deflateTxn(txn *msgs.Txn, seg *capn.Segment) *msgs.Txn {
if isDeflated(txn) {
return txn
}
deflatedTxn := msgs.NewTxn(seg)
deflatedTxn.SetId(txn.Id())
deflatedTxn.SetRetry(txn.Retry())
deflatedTxn.SetSubmitter(txn.Submitter())
deflatedTxn.SetSubmitterBootCount(txn.SubmitterBootCount())
deflatedTxn.SetFInc(txn.FInc())
deflatedTxn.SetTopologyVersion(txn.TopologyVersion())
deflatedTxn.SetAllocations(txn.Allocations())
actionsList := txn.Actions()
deflatedActionsList := msgs.NewActionList(seg, actionsList.Len())
deflatedTxn.SetActions(deflatedActionsList)
for idx, l := 0, actionsList.Len(); idx < l; idx++ {
deflatedAction := deflatedActionsList.At(idx)
deflatedAction.SetVarId(actionsList.At(idx).VarId())
deflatedAction.SetMissing()
}
return &deflatedTxn
}
示例4: NewBallotAccumulator
func NewBallotAccumulator(txnId *common.TxnId, txn *msgs.Txn) *BallotAccumulator {
actions := txn.Actions()
ba := &BallotAccumulator{
Txn: txn,
txnId: txnId,
vUUIdToBallots: make(map[common.VarUUId]*varBallot),
outcome: nil,
incompleteVars: actions.Len(),
dirty: false,
}
vBallots := make([]varBallot, ba.incompleteVars)
for idx := 0; idx < ba.incompleteVars; idx++ {
action := actions.At(idx)
vUUId := common.MakeVarUUId(action.VarId())
vBallot := &vBallots[idx]
vBallot.vUUId = vUUId
ba.vUUIdToBallots[*vUUId] = vBallot
}
allocs := txn.Allocations()
for idx, l := 0, allocs.Len(); idx < l; idx++ {
alloc := allocs.At(idx)
if alloc.Active() == 0 {
break
}
indices := alloc.ActionIndices()
for idy, m := 0, indices.Len(); idy < m; idy++ {
vBallots[int(indices.At(idy))].voters++
}
}
return ba
}
示例5: AllocForRMId
func AllocForRMId(txn *msgs.Txn, rmId common.RMId) *msgs.Allocation {
allocs := txn.Allocations()
for idx, l := 0, allocs.Len(); idx < l; idx++ {
alloc := allocs.At(idx)
if common.RMId(alloc.RmId()) == rmId {
return &alloc
}
}
return nil
}
示例6: GetAcceptorsFromTxn
func GetAcceptorsFromTxn(txnCap *msgs.Txn) common.RMIds {
fInc := int(txnCap.FInc())
twoFInc := fInc + fInc - 1
acceptors := make([]common.RMId, twoFInc)
allocations := txnCap.Allocations()
idx := 0
for l := allocations.Len(); idx < l && idx < twoFInc; idx++ {
alloc := allocations.At(idx)
acceptors[idx] = common.RMId(alloc.RmId())
}
// Danger! For the initial topology txns, there are _not_ twoFInc acceptors
return acceptors[:idx]
}
示例7: TxnToRootBytes
func TxnToRootBytes(txn *msgs.Txn) []byte {
seg := capn.NewBuffer(nil)
txnCap := msgs.NewRootTxn(seg)
txnCap.SetId(txn.Id())
txnCap.SetRetry(txn.Retry())
txnCap.SetSubmitter(txn.Submitter())
txnCap.SetSubmitterBootCount(txn.SubmitterBootCount())
txnCap.SetActions(txn.Actions())
txnCap.SetAllocations(txn.Allocations())
txnCap.SetFInc(txn.FInc())
txnCap.SetTopologyVersion(txn.TopologyVersion())
return server.SegToBytes(seg)
}