/** @covers Brickoo\Component\Messaging\MessageRecursionDepthList::isDepthLimitReached */ public function testIsDepthLimitReached() { $messageName = "test.message"; $messageRecursionDepthList = new MessageRecursionDepthList(100); $messageRecursionDepthList->addMessage($messageName); $this->assertFalse($messageRecursionDepthList->isDepthLimitReached($messageName)); $messageRecursionDepthList = new MessageRecursionDepthList(0); $messageRecursionDepthList->addMessage($messageName); $this->assertTrue($messageRecursionDepthList->isDepthLimitReached($messageName)); }
/** * Dispatch the message to all corresponding listeners. * @param \Brickoo\Component\Messaging\Message $message * @throws \Brickoo\Component\Messaging\Exception\MaxRecursionDepthReachedException * @return \Brickoo\Component\Messaging\MessageDispatcher */ public function dispatch(Message $message) { $messageName = $message->getName(); if (!$this->listenerCollection->hasListeners($messageName)) { return $this; } if ($this->messageRecursionDepthList->isDepthLimitReached($messageName)) { throw new MaxRecursionDepthReachedException($messageName, $this->messageRecursionDepthList->getRecursionDepth($messageName)); } $this->messageRecursionDepthList->increaseDepth($messageName); $this->processMessage($message, $this->listenerCollection->getListeners($messageName)); $this->messageRecursionDepthList->decreaseDepth($messageName); return $this; }