コード例 #1
0
ファイル: ping.go プロジェクト: lucmichalski/fae
func pingCluster(proxy *proxy.Proxy) {
	if err := etclib.Dial([]string{zk}); err != nil {
		fmt.Printf("zk: %s", err.Error())
		return
	}
	go proxy.StartMonitorCluster()
	proxy.AwaitClusterTopologyReady()

	peers := proxy.ClusterPeers()
	if len(peers) == 0 {
		fmt.Println("found no fae peers")
		return
	}

	for i := 0; i < loops; i++ {
		for _, peerAddr := range peers {
			client, err := proxy.ServantByAddr(peerAddr)
			if err != nil {
				fmt.Printf("[%6d] %21s: %s\n", i+1, peerAddr, err)
				continue
			}

			ctx := rpc.NewContext()
			ctx.Reason = REASON
			ctx.Rid = time.Now().UnixNano() + int64(i)
			pong, err := client.Ping(ctx)
			if err != nil {
				client.Close()
				fmt.Printf("[%6d] %21s: %s\n", i+1, peerAddr, err)
			} else {
				fmt.Printf("[%6d] %21s: %s\n", i+1, peerAddr, pong)
			}

			client.Recycle()
		}
	}

}