/**
* Reveal the whole Disque cluster from a node HELLO response
*
* The HELLO response from a Disque node contains addresses of all other
* nodes in the cluster. We want to learn about them and save them, so that
* we can switch to them later, if needed.
*
* @param Node $node The current node
*/
private function revealClusterFromHello(Node $node)
{
$hello = $node->getHello();
$revealedNodes = [];
foreach ($hello[HelloResponse::NODES] as $node) {
$id = $node[HelloResponse::NODE_ID];
$revealedNode = $this->revealNodeFromHello($id, $node);
// Update or set the node's priority as determined by Disque
$priority = $node[HelloResponse::NODE_PRIORITY];
$revealedNode->setPriority($priority);
$revealedNodes[$id] = $revealedNode;
}
$this->nodes = $revealedNodes;
}