vendor/3slab/vdm-library-bundle/EventSubscriber/Trace/TraceAddEnterSubscriber.php line 59

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\Trace;
  8. use Symfony\Component\Messenger\Envelope;
  9. use Vdm\Bundle\LibraryBundle\Event\CollectWorkerMessageReceivedEvent;
  10. use Vdm\Bundle\LibraryBundle\Model\Trace;
  11. use Psr\Log\LoggerInterface;
  12. use Psr\Log\NullLogger;
  13. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  14. use Symfony\Component\Messenger\Event\WorkerMessageReceivedEvent;
  15. use Vdm\Bundle\LibraryBundle\Model\TraceableMessageInterface;
  16. class TraceAddEnterSubscriber implements EventSubscriberInterface
  17. {
  18.     /**
  19.      * @var string
  20.      */
  21.     private $appName;
  22.     /**
  23.      * @var LoggerInterface
  24.      */
  25.     private $logger;
  26.     /**
  27.      * TraceAddEnterSubscriber constructor.
  28.      *
  29.      * @param string $appName
  30.      * @param LoggerInterface|null $vdmLogger
  31.      */
  32.     public function __construct(string $appNameLoggerInterface $vdmLogger null)
  33.     {
  34.         $this->appName $appName;
  35.         $this->logger $vdmLogger ?? new NullLogger();
  36.     }
  37.     /**
  38.      * Method executed on WorkerMessageReceivedEvent event
  39.      *
  40.      * @param WorkerMessageReceivedEvent $event
  41.      */
  42.     public function onWorkerMessageReceivedEvent(WorkerMessageReceivedEvent $event)
  43.     {
  44.         $this->addEnterTrace($event->getEnvelope());
  45.     }
  46.     /**
  47.      * Method executed on WorkerMessageReceivedEvent event
  48.      *
  49.      * @param CollectWorkerMessageReceivedEvent $event
  50.      */
  51.     public function onCollectWorkerMessageReceivedEvent(CollectWorkerMessageReceivedEvent $event)
  52.     {
  53.         $this->addEnterTrace($event->getEnvelope());
  54.     }
  55.     /**
  56.      * @param Envelope $envelope
  57.      */
  58.     protected function addEnterTrace(Envelope $envelope)
  59.     {
  60.         $message $envelope->getMessage();
  61.         if (!$message instanceof TraceableMessageInterface) {
  62.             $this->logger->debug(
  63.                 'Trace {traceType} not added as message does not implement TraceableMessageInterface',
  64.                 ['traceType' => Trace::ENTER]
  65.             );
  66.             return;
  67.         }
  68.         $message->addTrace(new Trace($this->appNameTrace::ENTER));
  69.         $this->logger->debug('Trace {traceType} added to message with name {traceName}', [
  70.             'traceName' => $this->appName,
  71.             'traceType' => Trace::ENTER
  72.         ]);
  73.     }
  74.     /**
  75.      * {@inheritDoc}
  76.      * @codeCoverageIgnore
  77.      */
  78.     public static function getSubscribedEvents(): array
  79.     {
  80.         return [
  81.             CollectWorkerMessageReceivedEvent::class => 'onCollectWorkerMessageReceivedEvent',
  82.             WorkerMessageReceivedEvent::class => 'onWorkerMessageReceivedEvent',
  83.         ];
  84.     }
  85. }