fuzzy/cluster.go
func (c *cluster) Leader(timeout time.Duration) *raftNode {
	start := time.Now()
	for true {
		for _, n := range c.nodes {
			if n.raft.State() == raft.Leader {
				return n
			}
		}
		if time.Now().Sub(start) > timeout {
			return nil
		}
		time.Sleep(time.Millisecond)
	}
	return nil
}
func (c *cluster) Leader(timeout time.Duration) *raftNode {
	start := time.Now()
	for true {
		for _, n := range c.nodes {
			if n.raft.State() == raft.Leader {
				return n
			}
		}
		if time.Now().Sub(start) > timeout {
			return nil
		}
		time.Sleep(time.Millisecond)
	}
	return nil
}
func ( c * cluster ) Leader ( timeout time . Duration ) * raftNode { start := time . Now ( ) for true { for _ , n := range c . nodes { if n . raft . State ( ) == raft . Leader { return n } } if time . Now ( ) . Sub ( start ) > timeout { return nil } time . Sleep ( time . Millisecond ) } return nil }
// Leader returns the node that is currently the Leader, if there is no
// leader this function blocks until a leader is elected (or a timeout occurs)
Leader returns the node that is currently the Leader if there is no leader this function blocks until a leader is elected ( or a timeout occurs )