/**
  * Calculate the bytes to skip when reading the event file.
  *
  * @param DomainEventMessageInterface $snapshotEvent the snapshot event
  * @return integer the bytes to skip when reading the event file
  *
  * @throws \Exception
  */
 private function calculateOffset(DomainEventMessageInterface $snapshotEvent)
 {
     try {
         $eventMessageReader = new FilesystemEventMessageReader($this->eventFile, $this->eventSerializer);
         $lastReadSequenceNumber = -1;
         while ($lastReadSequenceNumber < $snapshotEvent->getScn()) {
             $entry = $eventMessageReader->readEventMessage();
             $lastReadSequenceNumber = $entry->getScn();
         }
         return $this->eventFile->ftell();
     } catch (\Exception $ex) {
         throw $ex;
     }
 }
 public function hasNext()
 {
     return null !== $this->next && $this->next->getScn() <= $this->lastSequenceNumber;
 }
 public function hasNext()
 {
     return null !== $this->next && $this->next->getScn() <= $this->lastScn;
 }
예제 #4
0
 /**
  * Initialize an Event entry for the given <code>event</code>.
  *
  * @param string $type     The type identifier of the aggregate root the event belongs to
  * @param DomainEventMessageInterface $event    The event to store in the EventStore
  * @param SerializedObjectInterface $payload  The serialized payload of the Event
  * @param SerializedObjectInterface $metaData The serialized metaData of the Event
  */
 public function __construct($type, DomainEventMessageInterface $event, SerializedObjectInterface $payload, SerializedObjectInterface $metaData)
 {
     $this->eventIdentifier = $event->getIdentifier();
     $this->type = $type;
     //$this->payloadType = $payload->getContentType();
     $this->payloadType = $payload->getType()->getName();
     $this->payloadRevision = $payload->getType()->getRevision();
     $this->payload = $payload->getData();
     $this->aggregateIdentifier = $event->getAggregateIdentifier();
     $this->scn = $event->getScn();
     $this->metaData = $metaData->getData();
     $this->timestamp = $event->getTimestamp();
 }