175 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
		
		
			
		
	
	
			175 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
|   | <?php | ||
|  | 
 | ||
|  | declare(strict_types=1); | ||
|  | 
 | ||
|  | namespace Enqueue\Stomp; | ||
|  | 
 | ||
|  | use Interop\Queue\Message; | ||
|  | use Stomp\Transport\Frame; | ||
|  | 
 | ||
|  | class StompMessage implements Message | ||
|  | { | ||
|  |     /** | ||
|  |      * @var string | ||
|  |      */ | ||
|  |     private $body; | ||
|  | 
 | ||
|  |     /** | ||
|  |      * @var array | ||
|  |      */ | ||
|  |     private $properties; | ||
|  | 
 | ||
|  |     /** | ||
|  |      * @var array | ||
|  |      */ | ||
|  |     private $headers; | ||
|  | 
 | ||
|  |     /** | ||
|  |      * @var bool | ||
|  |      */ | ||
|  |     private $redelivered; | ||
|  | 
 | ||
|  |     /** | ||
|  |      * @var Frame | ||
|  |      */ | ||
|  |     private $frame; | ||
|  | 
 | ||
|  |     public function __construct(string $body = '', array $properties = [], array $headers = []) | ||
|  |     { | ||
|  |         $this->body = $body; | ||
|  |         $this->properties = $properties; | ||
|  |         $this->headers = $headers; | ||
|  |         $this->redelivered = false; | ||
|  |     } | ||
|  | 
 | ||
|  |     public function setBody(string $body): void | ||
|  |     { | ||
|  |         $this->body = $body; | ||
|  |     } | ||
|  | 
 | ||
|  |     public function getBody(): string | ||
|  |     { | ||
|  |         return $this->body; | ||
|  |     } | ||
|  | 
 | ||
|  |     public function setProperties(array $properties): void | ||
|  |     { | ||
|  |         $this->properties = $properties; | ||
|  |     } | ||
|  | 
 | ||
|  |     public function getProperties(): array | ||
|  |     { | ||
|  |         return $this->properties; | ||
|  |     } | ||
|  | 
 | ||
|  |     public function setProperty(string $name, $value): void | ||
|  |     { | ||
|  |         if (null === $value) { | ||
|  |             unset($this->properties[$name]); | ||
|  |         } else { | ||
|  |             $this->properties[$name] = $value; | ||
|  |         } | ||
|  |     } | ||
|  | 
 | ||
|  |     public function getProperty(string $name, $default = null) | ||
|  |     { | ||
|  |         return array_key_exists($name, $this->properties) ? $this->properties[$name] : $default; | ||
|  |     } | ||
|  | 
 | ||
|  |     public function setHeaders(array $headers): void | ||
|  |     { | ||
|  |         $this->headers = $headers; | ||
|  |     } | ||
|  | 
 | ||
|  |     public function getHeaders(): array | ||
|  |     { | ||
|  |         return $this->headers; | ||
|  |     } | ||
|  | 
 | ||
|  |     public function setHeader(string $name, $value): void | ||
|  |     { | ||
|  |         if (null === $value) { | ||
|  |             unset($this->headers[$name]); | ||
|  |         } else { | ||
|  |             $this->headers[$name] = $value; | ||
|  |         } | ||
|  |     } | ||
|  | 
 | ||
|  |     public function getHeader(string $name, $default = null) | ||
|  |     { | ||
|  |         return array_key_exists($name, $this->headers) ? $this->headers[$name] : $default; | ||
|  |     } | ||
|  | 
 | ||
|  |     public function isPersistent(): bool | ||
|  |     { | ||
|  |         return $this->getHeader('persistent', false); | ||
|  |     } | ||
|  | 
 | ||
|  |     public function setPersistent(bool $persistent): void | ||
|  |     { | ||
|  |         $this->setHeader('persistent', $persistent); | ||
|  |     } | ||
|  | 
 | ||
|  |     public function isRedelivered(): bool | ||
|  |     { | ||
|  |         return $this->redelivered; | ||
|  |     } | ||
|  | 
 | ||
|  |     public function setRedelivered(bool $redelivered): void | ||
|  |     { | ||
|  |         $this->redelivered = $redelivered; | ||
|  |     } | ||
|  | 
 | ||
|  |     public function setCorrelationId(string $correlationId = null): void | ||
|  |     { | ||
|  |         $this->setHeader('correlation_id', (string) $correlationId); | ||
|  |     } | ||
|  | 
 | ||
|  |     public function getCorrelationId(): ?string | ||
|  |     { | ||
|  |         return $this->getHeader('correlation_id'); | ||
|  |     } | ||
|  | 
 | ||
|  |     public function setMessageId(string $messageId = null): void | ||
|  |     { | ||
|  |         $this->setHeader('message_id', (string) $messageId); | ||
|  |     } | ||
|  | 
 | ||
|  |     public function getMessageId(): ?string | ||
|  |     { | ||
|  |         return $this->getHeader('message_id'); | ||
|  |     } | ||
|  | 
 | ||
|  |     public function getTimestamp(): ?int | ||
|  |     { | ||
|  |         $value = $this->getHeader('timestamp'); | ||
|  | 
 | ||
|  |         return null === $value ? null : (int) $value; | ||
|  |     } | ||
|  | 
 | ||
|  |     public function setTimestamp(int $timestamp = null): void | ||
|  |     { | ||
|  |         $this->setHeader('timestamp', $timestamp); | ||
|  |     } | ||
|  | 
 | ||
|  |     public function getFrame(): ?Frame | ||
|  |     { | ||
|  |         return $this->frame; | ||
|  |     } | ||
|  | 
 | ||
|  |     public function setFrame(Frame $frame = null): void | ||
|  |     { | ||
|  |         $this->frame = $frame; | ||
|  |     } | ||
|  | 
 | ||
|  |     public function setReplyTo(string $replyTo = null): void | ||
|  |     { | ||
|  |         $this->setHeader('reply-to', $replyTo); | ||
|  |     } | ||
|  | 
 | ||
|  |     public function getReplyTo(): ?string | ||
|  |     { | ||
|  |         return $this->getHeader('reply-to'); | ||
|  |     } | ||
|  | } |