本文整理匯總了Golang中goshawkdb/io/common.MakeVarUUId函數的典型用法代碼示例。如果您正苦於以下問題:Golang MakeVarUUId函數的具體用法?Golang MakeVarUUId怎麽用?Golang MakeVarUUId使用的例子?那麽, 這裏精選的函數代碼示例或許可以為您提供幫助。
在下文中一共展示了MakeVarUUId函數的14個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Golang代碼示例。
示例1: VarFromData
func VarFromData(data []byte, exe *dispatcher.Executor, disk *mdbs.MDBServer, vm *VarManager) (*Var, error) {
seg, _, err := capn.ReadFromMemoryZeroCopy(data)
if err != nil {
return nil, err
}
varCap := msgs.ReadRootVar(seg)
v := newVar(common.MakeVarUUId(varCap.Id()), exe, disk, vm)
positions := varCap.Positions()
if positions.Len() != 0 {
v.positions = (*common.Positions)(&positions)
}
writeTxnId := common.MakeTxnId(varCap.WriteTxnId())
writeTxnClock := VectorClockFromCap(varCap.WriteTxnClock())
writesClock := VectorClockFromCap(varCap.WritesClock())
server.Log(v.UUId, "Restored", writeTxnId)
if result, err := disk.ReadonlyTransaction(func(rtxn *mdbs.RTxn) (interface{}, error) {
return db.ReadTxnFromDisk(rtxn, writeTxnId)
}).ResultError(); err == nil {
if result == nil || result.(*msgs.Txn) == nil {
panic(fmt.Sprintf("%v Unable to find txn %v on disk (%v)", v.UUId, writeTxnId, result))
}
actions := result.(*msgs.Txn).Actions()
v.curFrame = NewFrame(nil, v, writeTxnId, &actions, writeTxnClock, writesClock)
v.curFrameOnDisk = v.curFrame
} else {
return nil, err
}
v.varCap = &varCap
return v, nil
}
示例2: OneATxnVotesReceived
func (am *AcceptorManager) OneATxnVotesReceived(sender common.RMId, txnId *common.TxnId, oneATxnVotes *msgs.OneATxnVotes) {
instanceRMId := common.RMId(oneATxnVotes.RmId())
server.Log(txnId, "1A received from", sender, "; instance:", instanceRMId)
instId := instanceId([instanceIdLen]byte{})
instIdSlice := instId[:]
copy(instIdSlice, txnId[:])
binary.BigEndian.PutUint32(instIdSlice[common.KeyLen:], uint32(instanceRMId))
replySeg := capn.NewBuffer(nil)
msg := msgs.NewRootMessage(replySeg)
oneBTxnVotes := msgs.NewOneBTxnVotes(replySeg)
msg.SetOneBTxnVotes(oneBTxnVotes)
oneBTxnVotes.SetRmId(oneATxnVotes.RmId())
oneBTxnVotes.SetTxnId(oneATxnVotes.TxnId())
proposals := oneATxnVotes.Proposals()
promises := msgs.NewTxnVotePromiseList(replySeg, proposals.Len())
oneBTxnVotes.SetPromises(promises)
for idx, l := 0, proposals.Len(); idx < l; idx++ {
proposal := proposals.At(idx)
vUUId := common.MakeVarUUId(proposal.VarId())
copy(instIdSlice[common.KeyLen+4:], vUUId[:])
promise := promises.At(idx)
promise.SetVarId(vUUId[:])
am.ensureInstance(txnId, &instId, vUUId).OneATxnVotesReceived(&proposal, &promise)
}
NewOneShotSender(server.SegToBytes(replySeg), am.ConnectionManager, sender)
}
示例3: updateFromTxnCommit
func (c *cache) updateFromTxnCommit(txn *msgs.ClientTxn, txnId *common.TxnId) {
actions := txn.Actions()
c.Lock()
defer c.Unlock()
for idx, l := 0, actions.Len(); idx < l; idx++ {
action := actions.At(idx)
vUUId := common.MakeVarUUId(action.VarId())
switch action.Which() {
case msgs.CLIENTACTION_WRITE:
write := action.Write()
refs := write.References()
c.updateFromWrite(txnId, vUUId, write.Value(), &refs)
case msgs.CLIENTACTION_READWRITE:
rw := action.Readwrite()
refs := rw.References()
c.updateFromWrite(txnId, vUUId, rw.Value(), &refs)
case msgs.CLIENTACTION_CREATE:
create := action.Create()
refs := create.References()
c.updateFromWrite(txnId, vUUId, create.Value(), &refs)
case msgs.CLIENTACTION_READ:
// do nothing
}
}
}
示例4: updateFromTxnAbort
func (c *cache) updateFromTxnAbort(updates *msgs.ClientUpdate_List) []*common.VarUUId {
modifiedVars := make([]*common.VarUUId, 0, updates.Len())
c.Lock()
defer c.Unlock()
for idx, l := 0, updates.Len(); idx < l; idx++ {
update := updates.At(idx)
txnId := common.MakeTxnId(update.Version())
actions := update.Actions()
for idy, m := 0, actions.Len(); idy < m; idy++ {
action := actions.At(idy)
vUUId := common.MakeVarUUId(action.VarId())
//fmt.Printf("%[email protected]%v ", vUUId, txnId)
switch action.Which() {
case msgs.CLIENTACTION_DELETE:
c.updateFromDelete(vUUId, txnId)
modifiedVars = append(modifiedVars, vUUId)
case msgs.CLIENTACTION_WRITE:
// We're missing TxnId and TxnId made a write of vUUId (to
// version TxnId).
write := action.Write()
refs := write.References()
if c.updateFromWrite(txnId, vUUId, write.Value(), &refs) {
modifiedVars = append(modifiedVars, vUUId)
}
default:
log.Fatal("Received update that was neither a read or write action:", action.Which())
}
}
}
//fmt.Println(".")
return modifiedVars
}
示例5: TopologyFromCap
func TopologyFromCap(txnId *common.TxnId, root *msgs.VarIdPos, topology *msgs.Topology) *Topology {
t := &Topology{Configuration: &configuration.Configuration{}}
t.ClusterId = topology.ClusterId()
t.Version = topology.Version()
t.Hosts = topology.Hosts().ToArray()
t.F = topology.F()
t.FInc = t.F + 1
t.TwoFInc = (2 * uint16(t.F)) + 1
t.MaxRMCount = topology.MaxRMCount()
t.AsyncFlush = topology.AsyncFlush()
rms := topology.Rms()
t.AllRMs = make([]common.RMId, rms.Len())
for idx := range t.AllRMs {
t.AllRMs[idx] = common.RMId(rms.At(idx))
}
t.DBVersion = txnId
if root != nil && len(root.Id()) == common.KeyLen {
t.RootVarUUId = common.MakeVarUUId(root.Id())
pos := common.Positions(root.Positions())
t.RootPositions = &pos
}
accounts := topology.Accounts()
t.Accounts = make(map[string]string, accounts.Len())
for idx, l := 0, accounts.Len(); idx < l; idx++ {
account := accounts.At(idx)
t.Accounts[account.Username()] = account.Password()
}
return t
}
示例6: nextVarUUId
func (conn *Connection) nextVarUUId() *common.VarUUId {
conn.lock.Lock()
defer conn.lock.Unlock()
binary.BigEndian.PutUint64(conn.namespace[:8], conn.nextVUUId)
vUUId := common.MakeVarUUId(conn.namespace)
conn.nextVUUId++
return vUUId
}
示例7: NextVarUUId
func (lc *LocalConnection) NextVarUUId() *common.VarUUId {
lc.Lock()
defer lc.Unlock()
vUUId := common.MakeVarUUId(lc.namespace)
binary.BigEndian.PutUint64(vUUId[0:8], lc.nextVarNumber)
lc.nextVarNumber++
return vUUId
}
示例8: MakeAbortBallots
func MakeAbortBallots(txn *msgs.Txn, alloc *msgs.Allocation) []*eng.Ballot {
actions := txn.Actions()
actionIndices := alloc.ActionIndices()
ballots := make([]*eng.Ballot, actionIndices.Len())
for idx, l := 0, actionIndices.Len(); idx < l; idx++ {
action := actions.At(int(actionIndices.At(idx)))
vUUId := common.MakeVarUUId(action.VarId())
ballots[idx] = eng.NewBallot(vUUId, eng.AbortDeadlock, nil)
}
return ballots
}
示例9: createRollClientTxn
func (fo *frameOpen) createRollClientTxn() (*msgs.ClientTxn, map[common.VarUUId]*common.Positions) {
var origWrite *msgs.Action
vUUIdBytes := fo.v.UUId[:]
for idx, l := 0, fo.frameTxnActions.Len(); idx < l; idx++ {
action := fo.frameTxnActions.At(idx)
if bytes.Equal(action.VarId(), vUUIdBytes) {
origWrite = &action
break
}
}
seg := capn.NewBuffer(nil)
ctxn := msgs.NewClientTxn(seg)
ctxn.SetRetry(false)
actions := msgs.NewClientActionList(seg, 1)
ctxn.SetActions(actions)
action := actions.At(0)
action.SetVarId(fo.v.UUId[:])
action.SetRoll()
roll := action.Roll()
roll.SetVersion(fo.frameTxnId[:])
var refs msgs.VarIdPos_List
switch origWrite.Which() {
case msgs.ACTION_WRITE:
ow := origWrite.Write()
roll.SetValue(ow.Value())
refs = ow.References()
case msgs.ACTION_READWRITE:
owr := origWrite.Readwrite()
roll.SetValue(owr.Value())
refs = owr.References()
case msgs.ACTION_CREATE:
oc := origWrite.Create()
roll.SetValue(oc.Value())
refs = oc.References()
case msgs.ACTION_ROLL:
owr := origWrite.Roll()
roll.SetValue(owr.Value())
refs = owr.References()
default:
panic(fmt.Sprintf("%v unexpected action type when building roll: %v", fo.frame, origWrite.Which()))
}
posMap := make(map[common.VarUUId]*common.Positions)
posMap[*fo.v.UUId] = fo.v.positions
refVarList := seg.NewDataList(refs.Len())
roll.SetReferences(refVarList)
for idx, l := 0, refs.Len(); idx < l; idx++ {
ref := refs.At(idx)
vUUId := common.MakeVarUUId(ref.Id())
pos := common.Positions(ref.Positions())
posMap[*vUUId] = &pos
refVarList.Set(idx, vUUId[:])
}
return &ctxn, posMap
}
示例10: String
func (id *outcomeEqualId) String() string {
idList := (*msgs.Outcome)(id).Id()
buf := "OutcomeId["
for idx, l := 0, idList.Len(); idx < l; idx++ {
outId := idList.At(idx)
buf += fmt.Sprintf("%v{", common.MakeVarUUId(outId.VarId()))
instList := outId.AcceptedInstances()
for idy, m := 0, instList.Len(); idy < m; idy++ {
inst := instList.At(idy)
buf += fmt.Sprintf("(instance %v: vote %v)", common.RMId(inst.RmId()), inst.Vote())
}
buf += "} "
}
buf += "]"
return buf
}
示例11: loadVars
func loadVars(disk *mdbs.MDBServer, vars map[common.VarUUId]*varstate) {
_, err := disk.ReadonlyTransaction(func(rtxn *mdbs.RTxn) (interface{}, error) {
return rtxn.WithCursor(db.DB.Vars, func(cursor *mdb.Cursor) (interface{}, error) {
key, data, err := cursor.Get(nil, nil, mdb.FIRST)
for ; err == nil; key, data, err = cursor.Get(nil, nil, mdb.NEXT) {
vUUId := common.MakeVarUUId(key)
seg, _, err := capn.ReadFromMemoryZeroCopy(data)
if err != nil {
log.Println(err)
continue
}
varCap := msgs.ReadRootVar(seg)
pos := varCap.Positions()
positions := (*common.Positions)(&pos)
writeTxnId := common.MakeTxnId(varCap.WriteTxnId())
writeTxnClock := eng.VectorClockFromCap(varCap.WriteTxnClock())
writesClock := eng.VectorClockFromCap(varCap.WritesClock())
if state, found := vars[*vUUId]; found {
if err := state.matches(disk, writeTxnId, writeTxnClock, writesClock, positions); err != nil {
log.Println(err)
}
} else {
state = &varstate{
vUUId: vUUId,
disks: []*mdbs.MDBServer{disk},
writeTxnId: writeTxnId,
writeTxnClock: writeTxnClock,
writeWritesClock: writesClock,
positions: positions,
}
vars[*vUUId] = state
}
}
if err == mdb.NotFound {
return nil, nil
} else {
return nil, err
}
})
}).ResultError()
if err != nil {
log.Println(err)
}
}
示例12: loadFromData
func (am *AcceptorManager) loadFromData(txnId *common.TxnId, data []byte) {
seg, _, err := capn.ReadFromMemoryZeroCopy(data)
if err != nil {
log.Println("Unable to decode acceptor state", data)
return
}
state := msgs.ReadRootAcceptorState(seg)
txn := state.Txn()
instId := instanceId([instanceIdLen]byte{})
instIdSlice := instId[:]
outcome := state.Outcome()
copy(instIdSlice, txnId[:])
instances := state.Instances()
acc := AcceptorFromData(txnId, &txn, &outcome, state.SendToAll(), &instances, am)
aInst := &acceptorInstances{acceptor: acc}
am.acceptors[*txnId] = aInst
for idx, l := 0, instances.Len(); idx < l; idx++ {
instancesForVar := instances.At(idx)
vUUId := common.MakeVarUUId(instancesForVar.VarId())
acceptedInstances := instancesForVar.Instances()
for idy, m := 0, acceptedInstances.Len(); idy < m; idy++ {
acceptedInstance := acceptedInstances.At(idy)
roundNumber := acceptedInstance.RoundNumber()
ballot := acceptedInstance.Ballot()
instance := &instance{
manager: am,
vUUId: vUUId,
promiseNum: paxosNumber(roundNumber),
acceptedNum: paxosNumber(roundNumber),
accepted: &ballot,
}
binary.BigEndian.PutUint32(instIdSlice[common.KeyLen:], acceptedInstance.RmId())
copy(instIdSlice[common.KeyLen+4:], vUUId[:])
am.instances[instId] = instance
aInst.addInstance(&instId)
}
}
acc.Start()
}
示例13: updateFromWrite
func (c *cache) updateFromWrite(txnId *common.TxnId, vUUId *common.VarUUId, value []byte, refs *capn.DataList) bool {
vr, found := c.m[*vUUId]
references := make([]*common.VarUUId, refs.Len())
switch {
case found && vr.version.Equal(txnId):
log.Fatal("Divergence discovered on update of ", vUUId, ": server thinks we don't have ", txnId, " but we do!")
return false
case found:
// Must use the new array because there could be txns in
// progress that still have pointers to the old array.
vr.references = references
default:
vr = &valueRef{references: references}
c.m[*vUUId] = vr
}
// fmt.Printf("%v updated (%v -> %v)\n", vUUId, vr.version, txnId)
vr.version = txnId
vr.value = value
for idz, n := 0, refs.Len(); idz < n; idz++ {
vr.references[idz] = common.MakeVarUUId(refs.At(idz))
}
return found
}
示例14: start
func (cash *connectionAwaitServerHandshake) start() (bool, error) {
seg := capn.NewBuffer(nil)
hello := msgs.NewRootHelloFromClient(seg)
hello.SetUsername(cash.username)
hello.SetPassword(cash.password)
cash.username = ""
cash.password = nil
buf := new(bytes.Buffer)
if _, err := seg.WriteTo(buf); err != nil {
return false, err
}
if err := cash.send(buf.Bytes()); err != nil {
return false, err
}
if seg, err := cash.readAndDecryptOne(); err == nil {
server := msgs.ReadRootHelloFromServer(seg)
root := server.Root()
if len(root.Id()) != common.KeyLen {
return false, fmt.Errorf("Root object VarUUId is of wrong length!")
}
cash.lock.Lock()
cash.rootVUUId = common.MakeVarUUId(root.Id())
cash.namespace = make([]byte, common.KeyLen)
copy(cash.namespace[8:], server.Namespace())
cash.serverHost = server.LocalHost()
cash.rmId = common.RMId(binary.BigEndian.Uint32(cash.namespace[16:20]))
cash.lock.Unlock()
cash.nextState()
return false, nil
} else {
return false, err
}
}