Example #1
0
 /**
  * Parses a event stream by using the given serializer, the event mapping and a header node
  *
  * @param Serializer $serializer the data serializer
  * @param $mapping array the mapping
  * @param Node $headerNode the header node
  * @return \Generator a generator that will yield a result on every event
  */
 private function parseEventStream(Serializer $serializer, $mapping, Node $headerNode)
 {
     $gametime = 0;
     while (!$serializer->eof()) {
         /** @var EventHeader $header */
         $header = $serializer->parse($headerNode);
         $gametime = $gametime + $header->getTimestamp();
         if (!isset($mapping[$header->getEventID()])) {
             print_r($header);
             throw new \RuntimeException(sprintf("Event %s not found.", $header->getEventID()));
         }
         /** @var Node $node */
         $node = $mapping[$header->getEventID()];
         $event = $serializer->parse($node);
         $serializer->align();
         if ($event instanceof AbstractEvent) {
             $event->setHeader($header);
         }
         (yield $gametime => $event);
     }
 }
 public function testUnserializeUInt32()
 {
     $result = $this->serializer->unserialize($this->createMemoryParser(hex2bin("07" . "BEEF0000")));
     $this->assertEquals(0xefbe, $result);
 }