def refresh(nodes_to_refresh = seeds)
refreshed_nodes = []
seen = {}
refresh_node = ->(node) do
unless node.address.resolved
begin
node.refresh
rescue Errors::ConnectionFailure
end
end
unless seen[node] || !node.address.resolved
seen[node] = true
seeds.push(node) unless seeds.include?(node)
begin
node.refresh
refreshed_nodes.push(node) unless refreshed_nodes.include?(node)
refresh_peers(node, &refresh_node)
rescue Errors::ConnectionFailure
end
end
end
nodes_to_refresh.each(&refresh_node)
refreshed_nodes
end