vendor/3slab/vdm-library-bundle/EventSubscriber/PrintMessage/PrintMessageSubscriber.php line 78

Open in your IDE?
  1. <?php
  2. /**
  3.  * @package    3slab/VdmLibraryBundle
  4.  * @copyright  2020 Suez Smart Solutions 3S.lab
  5.  * @license    https://github.com/3slab/VdmLibraryBundle/blob/master/LICENSE
  6.  */
  7. namespace Vdm\Bundle\LibraryBundle\EventSubscriber\PrintMessage;
  8. use Psr\Log\LoggerInterface;
  9. use Psr\Log\NullLogger;
  10. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  11. use Symfony\Component\Messenger\Envelope;
  12. use Symfony\Component\Messenger\Event\SendMessageToTransportsEvent;
  13. use Symfony\Component\Messenger\Event\WorkerMessageReceivedEvent;
  14. use Vdm\Bundle\LibraryBundle\Event\CollectWorkerMessageReceivedEvent;
  15. /**
  16.  * Class PrintMessageSubscriber
  17.  * @package Vdm\Bundle\LibraryBundle\EventSubscriber\PrintMessage
  18.  */
  19. class PrintMessageSubscriber implements EventSubscriberInterface
  20. {
  21.     /**
  22.      * @var bool
  23.      */
  24.     protected $printMsg;
  25.     /**
  26.      * @var bool
  27.      */
  28.     protected $logMsg;
  29.     /**
  30.      * @var LoggerInterface
  31.      */
  32.     protected $logger;
  33.     /**
  34.      * PrintMessageSubscriber constructor.
  35.      * @param bool $printMsg
  36.      * @param bool $logMsg
  37.      * @param LoggerInterface|null $vdmLogger
  38.      */
  39.     public function __construct(bool $printMsg falsebool $logMsg falseLoggerInterface $vdmLogger null)
  40.     {
  41.         $this->printMsg $printMsg;
  42.         $this->logMsg $logMsg;
  43.         $this->logger $vdmLogger ?? new NullLogger();
  44.     }
  45.     /**
  46.      * Method executed on CollectWorkerMessageReceivedEvent event
  47.      *
  48.      * @param CollectWorkerMessageReceivedEvent $event
  49.      */
  50.     public function onCollectWorkerMessageReceivedEvent(CollectWorkerMessageReceivedEvent $event)
  51.     {
  52.         $this->printMessageInEnvelope($event->getEnvelope(), 'message_received');
  53.     }
  54.     /**
  55.      * Method executed on WorkerMessageReceivedEvent event
  56.      *
  57.      * @param WorkerMessageReceivedEvent $event
  58.      */
  59.     public function onWorkerMessageReceivedEvent(WorkerMessageReceivedEvent $event)
  60.     {
  61.         $this->printMessageInEnvelope($event->getEnvelope(), 'message_received');
  62.     }
  63.     /**
  64.      * Method executed on SendMessageToTransportsEvent event
  65.      *
  66.      * @param SendMessageToTransportsEvent $event
  67.      */
  68.     public function onSendMessageToTransportEvent(SendMessageToTransportsEvent $event)
  69.     {
  70.         $this->printMessageInEnvelope($event->getEnvelope(), 'message_sent');
  71.     }
  72.     /**
  73.      * @param Envelope $envelope
  74.      * @param string|null $eventName
  75.      */
  76.     public function printMessageInEnvelope(Envelope $envelopestring $eventName)
  77.     {
  78.         $message $envelope->getMessage();
  79.         $headerTitle '---- dumping message ' $eventName ' ----';
  80.         $dashLine '';
  81.         for ($i 0$i strlen($headerTitle); $i++) {
  82.             $dashLine .= '-';
  83.         }
  84.         if ($this->printMsg) {
  85.             echo PHP_EOL;
  86.             echo $dashLine PHP_EOL;
  87.             echo $headerTitle PHP_EOL;
  88.             echo $dashLine PHP_EOL;
  89.             dump($message);
  90.             echo $dashLine PHP_EOL;
  91.             echo $dashLine PHP_EOL;
  92.             echo PHP_EOL;
  93.         }
  94.         if ($this->logMsg) {
  95.             $this->logger->debug('{message}', ['message' => $message]);
  96.         }
  97.     }
  98.     /**
  99.      * {@inheritDoc}
  100.      * @codeCoverageIgnore
  101.      */
  102.     public static function getSubscribedEvents(): array
  103.     {
  104.         // Ensure that this subscriber run before/after all the others
  105.         return [
  106.             CollectWorkerMessageReceivedEvent::class => ['onCollectWorkerMessageReceivedEvent'9999],
  107.             WorkerMessageReceivedEvent::class => ['onWorkerMessageReceivedEvent'9999],
  108.             SendMessageToTransportsEvent::class => ['onSendMessageToTransportEvent', -9999],
  109.         ];
  110.     }
  111. }