func connectWith(addr string) uint64 { if len(addr) == 0 { return 0 } pool := conn.NewPool(addr, 5) query := new(conn.Query) var network bytes.Buffer enc := gob.NewEncoder(&network) err := enc.Encode(helloRPC{cur_node.id, *workerPort}) if err != nil { glog.Fatalf("encode:", err) } query.Data = network.Bytes() reply := new(conn.Reply) if err := pool.Call("Worker.Hello", query, reply); err != nil { glog.WithField("call", "Worker.Hello").Fatal(err) } i, _ := strconv.Atoi(string(reply.Data)) glog.WithField("reply", i).WithField("addr", addr). Info("Got reply from server") pools[uint64(i)] = pool peers[uint64(i)] = pool.Addr return uint64(i) }
func getMasterIp(ip string) string { if len(ip) == 0 { return "" } pool := conn.NewPool(ip, 5) query := new(conn.Query) var network bytes.Buffer enc := gob.NewEncoder(&network) err := enc.Encode(helloRPC{cur_node.id, *workerPort}) if err != nil { glog.Fatalf("encode:", err) } query.Data = network.Bytes() reply := new(conn.Reply) if err := pool.Call("Worker.GetMasterIP", query, reply); err != nil { glog.WithField("call", "Worker.GetMasterIP").Fatal(err) } masterIP := string(reply.Data) glog.WithField("reply", masterIP).WithField("addr", ip). Info("Got reply from server") return masterIP }