本文整理汇总了Golang中genericsmrproto.Propose类的典型用法代码示例。如果您正苦于以下问题:Golang Propose类的具体用法?Golang Propose怎么用?Golang Propose使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了Propose类的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Golang代码示例。
示例1: clientListener
func (r *Replica) clientListener(conn net.Conn) {
reader := bufio.NewReader(conn)
writer := bufio.NewWriter(conn)
lock := new(sync.Mutex)
var msgType byte //:= make([]byte, 1)
var err error
for !r.Shutdown && err == nil {
if msgType, err = reader.ReadByte(); err != nil {
break
}
switch uint8(msgType) {
case genericsmrproto.PROPOSE:
prop := new(genericsmrproto.Propose)
if err = prop.Unmarshal(reader); err != nil {
break
}
r.ProposeChan <- &Propose{prop, -1, -1, writer, lock}
break
case genericsmrproto.READ:
read := new(genericsmrproto.Read)
if err = read.Unmarshal(reader); err != nil {
break
}
//r.ReadChan <- read
break
case genericsmrproto.PROPOSE_AND_READ:
pr := new(genericsmrproto.ProposeAndRead)
if err = pr.Unmarshal(reader); err != nil {
break
}
//r.ProposeAndReadChan <- pr
break
}
}
if err != nil && err != io.EOF {
log.Println("Error when reading from client connection:", err)
}
}
开发者ID:pombredanne,项目名称:qlease,代码行数:44,代码来源:genericsmr.go
示例2: simulatedClient
func simulatedClient(rlReply *masterproto.GetReplicaListReply, leader int, readings chan float64, done chan bool) {
N := len(rlReply.ReplicaList)
servers := make([]net.Conn, N)
readers := make([]*bufio.Reader, N)
writers := make([]*bufio.Writer, N)
rarray := make([]int, *reqsNb)
karray := make([]int64, *reqsNb)
perReplicaCount := make([]int, N)
M := N
if *barOne {
M = N - 1
}
randObj := rand.New(rand.NewSource(42))
zipf := rand.NewZipf(randObj, *s, *v, uint64(*reqsNb))
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 {
karray[i] = 42
} else {
karray[i] = int64(*startRange + 43 + i)
}
} else {
karray[i] = int64(zipf.Uint64())
}
}
repliesChan := make(chan int32, *reqsNb*N)
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])
if *fast {
//wait for replies from every replica
go waitForReplies(readers[i], repliesChan)
}
writers[i] = bufio.NewWriter(servers[i])
}
id := int32(*idStart)
args := genericsmrproto.Propose{id, state.Command{state.PUT, 0, 0}}
n := *reqsNb
for i := 0; i < n; i++ {
before := time.Now()
args.ClientId = id
args.Command.K = state.Key(karray[i])
if !*fast {
if *noLeader {
leader = rarray[i]
}
writers[leader].WriteByte(genericsmrproto.PROPOSE)
args.Marshal(writers[leader])
writers[leader].Flush()
} else {
//send to everyone
for rep := 0; rep < N; rep++ {
writers[rep].WriteByte(genericsmrproto.PROPOSE)
args.Marshal(writers[rep])
writers[rep].Flush()
}
}
for true {
rid := <-repliesChan
if rid == id {
break
}
}
after := time.Now()
id++
readings <- (after.Sub(before)).Seconds() * 1000
if *sleep > 0 {
time.Sleep(100 * 1000 * 1000)
}
}
for _, client := range servers {
if client != nil {
client.Close()
}
}
//.........这里部分代码省略.........
开发者ID:WIZARD-CXY,项目名称:golang-devops-stuff,代码行数:101,代码来源:client.go
示例3: main
//.........这里部分代码省略.........
} else {
fmt.Println("Zipfian distribution:")
//fmt.Println(test[0:100])
}
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])
}
successful = make([]int, N)
local = make([]int, N)
leader := 0
if *noLeader == false && *forceLeader < 0 {
reply := new(masterproto.GetLeaderReply)
if err = master.Call("Master.GetLeader", new(masterproto.GetLeaderArgs), reply); err != nil {
log.Fatalf("Error making the GetLeader RPC\n")
}
leader = reply.LeaderId
log.Printf("The leader is replica %d\n", leader)
} else if *forceLeader > 0 {
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
}
开发者ID:pombredanne,项目名称:qlease,代码行数:67,代码来源:client.go
示例4: simulatedClient
func simulatedClient(rlReply *masterproto.GetReplicaListReply, leader int, readings chan float64, done chan bool) {
N := len(rlReply.ReplicaList)
servers := make([]net.Conn, N)
readers := make([]*bufio.Reader, N)
writers := make([]*bufio.Writer, N)
rarray := make([]int, *reqsNb)
karray := make([]int64, *reqsNb)
perReplicaCount := make([]int, N)
M := N
if *barOne {
M = N - 1
}
randObj := rand.New(rand.NewSource(42))
zipf := rand.NewZipf(randObj, *s, *v, uint64(*reqsNb))
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 {
karray[i] = 42
} else {
karray[i] = int64(*startRange + 43 + i)
}
} else {
karray[i] = int64(zipf.Uint64())
}
}
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}}
var reply genericsmrproto.ProposeReply
n := *reqsNb
for i := 0; i < n; i++ {
if *noLeader {
leader = rarray[i]
}
args.ClientId = id
args.Command.K = state.Key(karray[i])
writers[leader].WriteByte(genericsmrproto.PROPOSE)
before := time.Now()
args.Marshal(writers[leader])
writers[leader].Flush()
if err := reply.Unmarshal(readers[leader]); err != nil || reply.OK == 0 {
fmt.Println("Error when reading:", err)
continue
}
after := time.Now()
id++
readings <- (after.Sub(before)).Seconds() * 1000
if *sleep > 0 {
time.Sleep(100 * 1000 * 1000)
}
}
for _, client := range servers {
if client != nil {
client.Close()
}
}
done <- true
}
开发者ID:nkts,项目名称:golang-devops-stuff,代码行数:84,代码来源:client.go
示例5: main
func main() {
flag.Parse()
runtime.GOMAXPROCS(*procs)
randObj := rand.New(rand.NewSource(42))
zipf := rand.NewZipf(randObj, *s, *v, uint64(*reqsNb)) //uint64(*reqsNb / *rounds + *eps))
if *conflicts > 100 {
log.Fatalf("Conflicts percentage must be between 0 and 100.\n")
}
master, err := rpc.DialHTTP("tcp", fmt.Sprintf("%s:%d", *masterAddr, *masterPort))
if err != nil {
log.Fatalf("Error connecting to master\n")
}
rlReply := new(masterproto.GetReplicaListReply)
err = master.Call("Master.GetReplicaList", new(masterproto.GetReplicaListArgs), rlReply)
if err != nil {
log.Fatalf("Error making the GetReplicaList RPC")
}
N = len(rlReply.ReplicaList)
servers := make([]net.Conn, N)
readers := make([]*bufio.Reader, N)
writers := make([]*bufio.Writer, N)
rarray = make([]int, *reqsNb / *rounds + *eps)
karray := make([]int64, *reqsNb / *rounds + *eps)
perReplicaCount := make([]int, N)
//test := make([]int, *reqsNb / *rounds + *eps)
M := N
if *barOne {
M = N - 1
}
for i := 0; i < len(rarray); i++ {
r := rand.Intn(M)
rarray[i] = r
if i < *reqsNb / *rounds {
perReplicaCount[r]++
}
if *conflicts >= 0 {
r = rand.Intn(100)
if r < *conflicts {
karray[i] = 42
} else {
karray[i] = int64(43 + i)
}
} else {
karray[i] = int64(zipf.Uint64())
//test[karray[i]]++
}
}
if *conflicts >= 0 {
//fmt.Println("Uniform distribution")
} else {
/*fmt.Println("Zipfian distribution:")
sum := 0
for _, val := range test[0:2000] {
sum += val
}
fmt.Println(test[0:100])
fmt.Println(sum)*/
}
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)
N = N - 1
}
readers[i] = bufio.NewReader(servers[i])
writers[i] = bufio.NewWriter(servers[i])
}
successful = make([]int, N)
leader := 0
if *noLeader == false {
reply := new(masterproto.GetLeaderReply)
if err = master.Call("Master.GetLeader", new(masterproto.GetLeaderArgs), reply); err != nil {
log.Fatalf("Error making the GetLeader RPC\n")
}
leader = reply.LeaderId
//log.Printf("The 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}} //make([]int64, state.VALUE_SIZE)}}
pdone := make(chan bool)
go printer(pdone)
before_total := time.Now()
//.........这里部分代码省略.........
开发者ID:nkts,项目名称:golang-devops-stuff,代码行数:101,代码来源:client.go
示例6: main
func main() {
flag.Parse()
runtime.GOMAXPROCS(*procs)
randObj := rand.New(rand.NewSource(42))
zipf := rand.NewZipf(randObj, *s, *v, uint64(*reqsNb / *rounds + *eps))
if *conflicts > 100 {
log.Fatalf("Conflicts percentage must be between 0 and 100.\n")
}
master, err := rpc.DialHTTP("tcp", fmt.Sprintf("%s:%d", *masterAddr, *masterPort))
if err != nil {
log.Fatalf("Error connecting to master\n")
}
rlReply := new(masterproto.GetReplicaListReply)
err = master.Call("Master.GetReplicaList", new(masterproto.GetReplicaListArgs), rlReply)
if err != nil {
log.Fatalf("Error making the GetReplicaList RPC")
}
N = len(rlReply.ReplicaList)
servers := make([]net.Conn, N)
readers := make([]*bufio.Reader, N)
writers := make([]*bufio.Writer, N)
rarray = make([]int, *reqsNb / *rounds + *eps)
karray := make([]int64, *reqsNb / *rounds + *eps)
perReplicaCount := make([]int, N)
test := make([]int, *reqsNb / *rounds + *eps)
for i := 0; i < len(rarray); i++ {
r := rand.Intn(N)
rarray[i] = r
if i < *reqsNb / *rounds {
perReplicaCount[r]++
}
if *conflicts >= 0 {
r = rand.Intn(100)
if r < *conflicts {
karray[i] = 42
} else {
karray[i] = int64(43 + i)
}
} else {
karray[i] = int64(zipf.Uint64())
test[karray[i]]++
}
}
if *conflicts >= 0 {
fmt.Println("Uniform distribution")
} else {
fmt.Println("Zipfian distribution:")
//fmt.Println(test[0:100])
}
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])
}
successful = make([]int, N)
leader := 0
if *noLeader == false {
reply := new(masterproto.GetLeaderReply)
if err = master.Call("Master.GetLeader", new(masterproto.GetLeaderArgs), reply); err != nil {
log.Fatalf("Error making the GetLeader RPC\n")
}
leader = reply.LeaderId
log.Printf("The 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}}
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
}
}
donePrinting := make(chan bool)
readings := make(chan int64, n)
//.........这里部分代码省略.........
开发者ID:WIZARD-CXY,项目名称:golang-devops-stuff,代码行数:101,代码来源:client.go
示例7: 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类示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论