/** * @param ChainViewInterface $headerChain * @param GuidedChainView $blockChain * @param Peer $peer * @param array $items */ public function advertised(ChainViewInterface $headerChain, GuidedChainView $blockChain, Peer $peer, array $items) { $fetch = []; $lastUnknown = null; foreach ($items as $inv) { $hash = $inv->getHash(); if ($headerChain->containsHash($hash)) { if (!$blockChain->containsHash($hash)) { $fetch[] = $inv; } } else { $lastUnknown = $hash; } } if (null !== $lastUnknown) { $peer->getheaders($headerChain->getHeadersLocator($lastUnknown)); $this->peerState->fetch($peer)->updateBlockAvailability($headerChain, $lastUnknown); } }
/** * @param Peer $peer * @param Addr $addr */ public function onAddr(Peer $peer, Addr $addr) { $state = $this->peerStates->fetch($peer); $this->emit(Message::ADDR, [$state, $peer, $addr]); }