當前位置: 首頁>>代碼示例>>Golang>>正文


Golang Propose.CommandId方法代碼示例

本文整理匯總了Golang中genericsmrproto.Propose.CommandId方法的典型用法代碼示例。如果您正苦於以下問題:Golang Propose.CommandId方法的具體用法?Golang Propose.CommandId怎麽用?Golang Propose.CommandId使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在genericsmrproto.Propose的用法示例。


在下文中一共展示了Propose.CommandId方法的2個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Golang代碼示例。

示例1: main


//.........這裏部分代碼省略.........
		leader = *forceLeader
		log.Printf("My leader is replica %d\n", leader)
	}

	var id int32 = 0
	done := make(chan bool, N)
	args := genericsmrproto.Propose{id, state.Command{state.PUT, 0, 0}, 0}

	before_total := time.Now()

	for j := 0; j < *rounds; j++ {

		n := *reqsNb / *rounds

		if *check {
			rsp = make([]bool, n)
			for j := 0; j < n; j++ {
				rsp[j] = false
			}
		}

		if *noLeader {
			for i := 0; i < N; i++ {
				go waitReplies(readers, i, perReplicaCount[i], done)
			}
		} else {
			go waitReplies(readers, leader, n, done)
		}

		before := time.Now()

		for i := 0; i < n+*eps; i++ {
			dlog.Printf("Sending proposal %d\n", id)
			args.CommandId = id
			if put[i] {
				args.Command.Op = state.PUT
			} else {
				args.Command.Op = state.GET
			}
			if !*fast && *noLeader {
				leader = rarray[i]
			}
			args.Command.K = state.Key(karrays[leader][iarray[i]])
			args.Command.V = state.Value(i) + 1
			//args.Timestamp = time.Now().UnixNano()
			if !*fast {
				writers[leader].WriteByte(genericsmrproto.PROPOSE)
				args.Marshal(writers[leader])
			} else {
				//send to everyone
				for rep := 0; rep < N; rep++ {
					writers[rep].WriteByte(genericsmrproto.PROPOSE)
					args.Marshal(writers[rep])
					writers[rep].Flush()
				}
			}
			//fmt.Println("Sent", id)
			id++
			if i%100 == 0 {
				for i := 0; i < N; i++ {
					writers[i].Flush()
				}
			}
		}
		for i := 0; i < N; i++ {
			writers[i].Flush()
開發者ID:pombredanne,項目名稱:qlease,代碼行數:67,代碼來源:client.go

示例2: simulatedClient

func simulatedClient(rlReply *masterproto.GetReplicaListReply, leaderId int, readsChan chan float64, writesChan chan float64, done chan bool, idx int) {
	N := len(rlReply.ReplicaList)
	servers := make([]net.Conn, N)
	readers := make([]*bufio.Reader, N)
	writers := make([]*bufio.Writer, N)

	rarray := make([]int, *reqsNb)
	iarray := make([]int, *reqsNb)
	put := make([]bool, *reqsNb)

	perReplicaCount := make([]int, N)
	M := N
	if *barOne {
		M = N - 1
	}
	randObj := rand.New(rand.NewSource(int64(42 + idx)))
	zipf := ycsbzipf.NewZipf(int(*D), randObj)
	for i := 0; i < len(rarray); i++ {
		r := rand.Intn(M)

		rarray[i] = r
		perReplicaCount[r]++

		if *conflicts >= 0 {
			r = rand.Intn(100)
			if r < *conflicts {
				iarray[i] = 0
			} else {
				iarray[i] = i
			}
		} else {
			iarray[i] = int(zipf.NextInt64())
		}
		//r = rand.Intn(100)
		r = randObj.Intn(100)
		if r < *writes {
			put[i] = true
		} else {
			put[i] = false
		}
	}

	for i := 0; i < N; i++ {
		var err error
		servers[i], err = net.Dial("tcp", rlReply.ReplicaList[i])
		if err != nil {
			log.Printf("Error connecting to replica %d\n", i)
		}
		readers[i] = bufio.NewReader(servers[i])
		writers[i] = bufio.NewWriter(servers[i])
	}

	var id int32 = 0
	args := genericsmrproto.Propose{id, state.Command{state.PUT, 0, 0}, 0}
	var reply genericsmrproto.ProposeReplyTS

	n := *reqsNb

	successful := 0
	for i := 0; i < n; i++ {
		leader := leaderId
		if *noLeader {
			leader = rarray[i]
		}
		args.CommandId = id
		if put[i] {
			args.Command.Op = state.PUT
		} else {
			args.Command.Op = state.GET
			if *readFrom > 0 {
				leader = *readFrom
			}
		}
		args.Command.K = state.Key(karray[iarray[i]])
		writers[leader].WriteByte(genericsmrproto.PROPOSE)

		before := time.Now()
		//log.Println(i, karray[i], iarray[i], karray[iarray[i]])

		args.Marshal(writers[leader])
		writers[leader].Flush()
		if err := reply.Unmarshal(readers[leader]); err != nil {
			fmt.Println("Error when reading:", err)
			continue
		}

		if reply.OK != 0 {
			successful++
		}

		after := time.Now()

		id++

		if put[i] {
			writesChan <- (after.Sub(before)).Seconds() * 1000
		} else {
			readsChan <- (after.Sub(before)).Seconds() * 1000
		}

//.........這裏部分代碼省略.........
開發者ID:pombredanne,項目名稱:qlease,代碼行數:101,代碼來源:client.go


注:本文中的genericsmrproto.Propose.CommandId方法示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。