createFrom static method
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');
}
}