85 lines
1.8 KiB
PHP
85 lines
1.8 KiB
PHP
|
<?php
|
||
|
|
||
|
declare(strict_types=1);
|
||
|
|
||
|
namespace PhpMqtt\Client;
|
||
|
|
||
|
/**
|
||
|
* A simple DTO for published messages which need to be stored in a repository
|
||
|
* while waiting for the confirmation to be deliverable.
|
||
|
*
|
||
|
* @package PhpMqtt\Client
|
||
|
*/
|
||
|
class PublishedMessage extends PendingMessage
|
||
|
{
|
||
|
private bool $received = false;
|
||
|
|
||
|
/**
|
||
|
* Creates a new published message object.
|
||
|
*/
|
||
|
public function __construct(
|
||
|
int $messageId,
|
||
|
private string $topicName,
|
||
|
private string $message,
|
||
|
private int $qualityOfService,
|
||
|
private bool $retain,
|
||
|
)
|
||
|
{
|
||
|
parent::__construct($messageId);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Returns the topic name of the published message.
|
||
|
*/
|
||
|
public function getTopicName(): string
|
||
|
{
|
||
|
return $this->topicName;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Returns the content of the published message.
|
||
|
*/
|
||
|
public function getMessage(): string
|
||
|
{
|
||
|
return $this->message;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Returns the requested quality of service level.
|
||
|
*/
|
||
|
public function getQualityOfServiceLevel(): int
|
||
|
{
|
||
|
return $this->qualityOfService;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Determines whether this message wants to be retained.
|
||
|
*/
|
||
|
public function wantsToBeRetained(): bool
|
||
|
{
|
||
|
return $this->retain;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Determines whether the message has been confirmed as received.
|
||
|
*/
|
||
|
public function hasBeenReceived(): bool
|
||
|
{
|
||
|
return $this->received;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Marks the published message as received (QoS level 2).
|
||
|
*
|
||
|
* Returns `true` if the message was not previously received. Otherwise `false` will be returned.
|
||
|
*/
|
||
|
public function markAsReceived(): bool
|
||
|
{
|
||
|
$result = !$this->received;
|
||
|
|
||
|
$this->received = true;
|
||
|
|
||
|
return $result;
|
||
|
}
|
||
|
}
|