handlePublishRelease method

bool handlePublishRelease(
  1. MqttMessage? msg
)

Handles the publish release, for messages that are undergoing Qos ExactlyOnce processing.

Implementation

bool handlePublishRelease(MqttMessage? msg) {
  final pubRelMsg = msg as MqttPublishReleaseMessage;
  final messageIdentifier = pubRelMsg.variableHeader.messageIdentifier;
  MqttLogger.log(
      'PublishingManager::handlePublishRelease - for message identifier $messageIdentifier');
  var publishSuccess = true;
  try {
    final pubMsg = receivedMessages.remove(messageIdentifier);
    if (pubMsg != null) {
      // Send the message for processing to whoever is waiting.
      final topic = PublicationTopic(pubMsg.variableHeader!.topicName);
      _clientEventBus!.fire(MessageReceived(topic, pubMsg));
      final compMsg = MqttPublishCompleteMessage()
          .withMessageIdentifier(pubMsg.variableHeader!.messageIdentifier);
      connectionHandler!.sendMessage(compMsg);
    }
  } on Exception {
    publishSuccess = false;
  }
  return publishSuccess;
}