createFrom static method

MqttMessage? createFrom(
  1. MqttByteBuffer messageStream
)

Creates a new instance of an MQTT Message based on a raw message stream.

Implementation

static MqttMessage? createFrom(MqttByteBuffer messageStream) {
  try {
    var header = MqttHeader();
    // Pass the input stream sequentially through the component
    // deserialization(create) methods to build a full MqttMessage.
    header = MqttHeader.fromByteBuffer(messageStream);

    if (messageStream.availableBytes < header.messageSize) {
      messageStream.reset();
      throw MqttIncompleteMessageException(
          'Available bytes is less than the message size');
    }
    final message = MqttMessageFactory.getMessage(header, messageStream);
    return message;
    // Rethrow incomplete message
  } on MqttIncompleteMessageException {
    rethrow;
    // Catch anything else
  } on Exception catch (e) {
    throw MqttInvalidMessageException(
        'The data provided in the message stream was not a '
        'valid MQTT Message, '
        'exception is $e, bytestream is $messageStream');
  }
}