本文整理汇总了Golang中github.com/gobby/src/paxos.NewPaxosNode函数的典型用法代码示例。如果您正苦于以下问题:Golang NewPaxosNode函数的具体用法?Golang NewPaxosNode怎么用?Golang NewPaxosNode使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了NewPaxosNode函数的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Golang代码示例。
示例1: main
func main() {
fmt.Printf("node %d starts\n", nid)
node, err := paxos.NewPaxosNode(nid, numNodes, fakecallback)
if err != nil {
fmt.Println("Cannot start node.\n")
fmt.Println(err)
return
}
listener, err := net.Listen("tcp", fmt.Sprintf(":%d", config.Nodes[nid].Port))
if err != nil {
fmt.Printf("node %d cannot listen to port:%s\n", err)
return
}
node.SetListener(&listener)
rpc.HandleHTTP()
go http.Serve(listener, nil)
time.Sleep(5 * time.Second)
for i := 0; i < 2; i++ {
c := command.Command{strconv.Itoa(nid), strconv.Itoa(i), command.Put, i, ""}
node.Replicate(&c)
}
for res := 0; res < 4; res++ {
_, ok := <-done
if !ok {
break
}
}
node.DumpLog()
fmt.Printf("node %d closes\n", nid)
}
开发者ID:postfix,项目名称:gobby,代码行数:33,代码来源:node.go
示例2: NewGobbyServer
func NewGobbyServer(nodeID int, numNodes int) (Gobbyserver, error) {
server := new(gobbyserver)
server.addrport = config.Nodes[nodeID].Address + ":" + strconv.Itoa(config.Nodes[nodeID].Port)
server.store = make(map[string]*kstate)
server.commandLog = make([]*command.Command, 0)
server.nextIndex = 0
server.replyChs = make(map[int]chan *gobbyrpc.GobbyReply)
server.pending = NewQueue()
if pnode, err := paxos.NewPaxosNode(nodeID, numNodes, server.getCommand); err != nil {
return nil, err
} else {
server.paxosnode = pnode
}
if lnode, err := lease.NewLeaseNode(nodeID, numNodes); err != nil {
return nil, err
} else {
server.leasenode = lnode
}
if err := rpc.RegisterName("gobbyServer", gobbyrpc.Wrap(server)); err != nil {
return nil, err
} else {
go ReplicateRoutine(server.pending, server.paxosnode)
return server, nil
}
//TODO:Now the listener is in the lease node, and we should let gobbyserver contain listener
}
开发者ID:postfix,项目名称:gobby,代码行数:28,代码来源:gobbyserver_impl.go
示例3: main
func main() {
n3, err := paxos.NewPaxosNode(config.Nodes[nid].Address,
config.Nodes[nid].Port,
config.Nodes[nid].NodeID,
fakecallback)
if err != nil {
fmt.Println("Cannot start node.\n")
fmt.Println(err)
return
}
for i := 0; i < 2; i++ {
err = n3.Pause()
if err != nil {
fmt.Println("Cannot Pause node.\n")
fmt.Println(err)
return
}
time.Sleep(1 * time.Second)
err = n3.Resume()
if err != nil {
fmt.Println("Cannot Resume node.\n")
fmt.Println(err)
return
}
}
}
开发者ID:postfix,项目名称:gobby,代码行数:27,代码来源:nodep.go
示例4: main
func main() {
node, err := paxos.NewPaxosNode(nid,
numNodes,
fakecallback)
if err != nil {
fmt.Println("Cannot start node.\n")
fmt.Println(err)
return
}
listener, err := net.Listen("tcp", fmt.Sprintf(":%d", config.Nodes[nid].Port))
if err != nil {
fmt.Printf("node %d cannot listen to port:%s\n", err)
return
}
node.SetListener(&listener)
rpc.HandleHTTP()
go http.Serve(listener, nil)
fmt.Println("Pause node.\n")
err = node.Pause()
if err != nil {
fmt.Println("Cannot Pause node.\n")
fmt.Println(err)
return
}
time.Sleep(5 * time.Second)
go func() {
time.Sleep(10 * time.Second)
fmt.Println("Resume node.\n")
err = node.Resume()
if err != nil {
fmt.Println("Cannot Resume node.\n")
fmt.Println(err)
return
}
}()
res := 0
for res < 6 {
_, ok := <-done
if ok {
res++
if res == 5 {
go func() {
c := command.Command{strconv.Itoa(nid), strconv.Itoa(0), command.Put, 0, ""}
node.Replicate(&c)
}()
}
} else {
break
}
}
if res == 6 {
fmt.Printf("\n%d receive all commands\n", nid)
} else {
fmt.Printf("%d Just break!!!!!\n", res)
}
time.Sleep(5 * time.Second)
}
开发者ID:postfix,项目名称:gobby,代码行数:60,代码来源:node.go
示例5: main
func main() {
node, err := paxos.NewPaxosNode(nid, numNodes, fakecallback)
if err != nil {
fmt.Println("Cannot start node.\n")
fmt.Println(err)
return
}
listener, err := net.Listen("tcp", fmt.Sprintf(":%d", config.Nodes[nid].Port))
if err != nil {
fmt.Printf("node %d cannot listen to port:%s\n", err)
return
}
node.SetListener(&listener)
rpc.HandleHTTP()
go http.Serve(listener, nil)
fmt.Println("Pause node.\n")
err = node.Pause()
if err != nil {
fmt.Println("Cannot Pause node.\n")
fmt.Println(err)
return
}
time.Sleep(5 * time.Second)
go func() {
time.Sleep(5 * time.Second)
fmt.Println("Resume node.\n")
err = node.Resume()
if err != nil {
fmt.Println("Cannot Resume node.\n")
fmt.Println(err)
return
}
}()
res := 0
for res < 22 {
_, ok := <-done
if ok {
res++
} else {
break
}
}
if res == 22 {
fmt.Printf("\n%d receive all commands\n", nid)
} else {
fmt.Printf("%d Just break %d!!!!!\n", nid, res)
}
node.DumpLog()
}
开发者ID:postfix,项目名称:gobby,代码行数:52,代码来源:node.go
注:本文中的github.com/gobby/src/paxos.NewPaxosNode函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论