Beispiel #1
0
 /**
  * @param Events $events
  */
 public function play(Events $events)
 {
     /* @var $event \Apha\Message\Event */
     foreach ($events->getIterator() as $event) {
         $this->eventBus->publish($event);
     }
 }
Beispiel #2
0
 /**
  */
 public final function onTick()
 {
     foreach ($this->schedule as $id => $task) {
         /* @var $task array */
         if (key($task) < time()) {
             $event = reset($task);
             unset($this->schedule[$id]);
             $this->eventBus->publish($event);
         }
     }
 }
Beispiel #3
0
 /**
  * @param Identity $aggregateId
  * @param string $aggregateType
  * @param Events $events
  * @param int $expectedPlayHead
  * @throws ConcurrencyException
  */
 public function save(Identity $aggregateId, string $aggregateType, Events $events, int $expectedPlayHead)
 {
     if (!$this->isValidPlayHead($aggregateId, $expectedPlayHead)) {
         throw new ConcurrencyException($expectedPlayHead, $this->current[$aggregateId->getValue()]);
     }
     $playHead = $expectedPlayHead;
     foreach ($events->getIterator() as $event) {
         /* @var $event Event */
         $playHead++;
         $event->setVersion($playHead);
         $this->saveEvent($aggregateId, $aggregateType, $event);
         $this->eventBus->publish($event);
     }
 }
Beispiel #4
0
 /**
  * @param string $eventClass
  * @param EventHandler $handler
  * @return void
  */
 public function removeHandler(string $eventClass, EventHandler $handler)
 {
     $this->eventBus->removeHandler($eventClass, $handler);
 }