Exemplo n.º 1
0
 /**
  * @param Peer $peer
  * @param NetworkMessage $msg
  */
 public function onPacket(Peer $peer, NetworkMessage $msg)
 {
     $payload = $msg->getPayload();
     if ($msg->getCommand() == 'inv') {
         /** @var Inv $payload */
         $items = $payload->getItems();
         foreach ($items as $invItem) {
             if ($invItem->isBlock()) {
                 $this->emit('inv.block', [$peer, $invItem]);
             } else {
                 if ($invItem->isTx()) {
                     $this->emit('inv.tx', [$peer, $invItem]);
                 } else {
                     if ($invItem->isFilteredBlock()) {
                         $this->emit('inv.filtered', [$peer, $invItem]);
                     }
                 }
             }
         }
     }
     $this->emit($msg->getCommand(), [$peer, $payload]);
 }
 /**
  * @param NetworkMessage $object
  * @return Buffer
  */
 public function serialize(NetworkMessage $object)
 {
     $payload = $object->getPayload()->getBuffer();
     $command = str_pad(unpack("H*", $object->getCommand())[1], 24, '0', STR_PAD_RIGHT);
     $header = $this->getHeaderTemplate()->write([Buffer::hex($this->network->getNetMagicBytes()), Buffer::hex($command), $payload->getSize(), $object->getChecksum()]);
     return Buffertools::concat($header, $payload);
 }