Exemplo n.º 1
0
 /**
  * @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);
     }
 }
Exemplo n.º 2
0
 /**
  * @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]);
 }