<?php/* * This file is part of the Symfony package. * * (c) Fabien Potencier <fabien@symfony.com> * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */namespace Enqueue\MessengerAdapter\EnvelopeItem;use Enqueue\AmqpTools\DelayStrategy;use Symfony\Component\Messenger\Stamp\StampInterface;/** * Message envelope item allowing to specify some transport configuration. * * @author Thomas Prelot <tprelot@gmail.com> * * @experimental in 4.1 */final class TransportConfiguration implements StampInterface, \Serializable{ private $topic; private $metadata = array(); public function __construct(array $configuration = array()) { $this->topic = $configuration['topic'] ?? null; $this->metadata = $configuration['metadata'] ?? array(); } /** * Get topic name. */ public function getTopic(): ?string { return $this->topic; } /** * Retrieve metadata information for decorating * concrete implementations of Interop\Queue\Message. */ public function getMetadata(): array { return $this->metadata; } public function setTopic($topic): self { $this->topic = $topic; return $this; } public function setMetadata(array $metadata): self { $this->metadata = $metadata; return $this; } public function addMetadata(string $key, $value): self { $this->metadata[$key] = $value; return $this; } public function setPriority(int $priority = null): self { $this->metadata['priority'] = $priority; return $this; } public function setDeliveryDelay(int $deliveryDelay = null): self { $this->metadata['deliveryDelay'] = $deliveryDelay; return $this; } public function setDelayStrategy(DelayStrategy $delayStrategy = null): self { $this->metadata['delayStrategy'] = $delayStrategy; return $this; } public function setTimeToLive(int $timeToLive = null): self { $this->metadata['timeToLive'] = $timeToLive; return $this; } public function serialize() { return serialize(array( 'topic' => $this->topic, 'metadata' => $this->metadata, )); } public function unserialize($serialized) { list( 'topic' => $topic, 'metadata' => $metadata ) = unserialize($serialized, array('allowed_classes' => false)); $this->__construct(array( 'topic' => $topic, 'metadata' => $metadata, )); }}