createNewSubscription method
Creates a new single subscription for the specified topic. If the subscription cannot be created null is returned.
Implementation
Subscription? createNewSubscription(String topic, MqttQos? qos) {
try {
final subscriptionTopic = SubscriptionTopic(topic);
// Get an ID that represents the subscription. We will use this
// same ID for unsubscribe as well.
final messageIdentifier = messageIdentifierDispenser
.getNextMessageIdentifier();
final sub = Subscription();
sub.topic = subscriptionTopic;
sub.qos = qos!;
sub.messageIdentifier = messageIdentifier;
sub.createdTime = DateTime.now();
pendingSubscriptions[messageIdentifier] = sub;
// Build a subscribe message for the caller and send it off to the broker.
final msg = MqttSubscribeMessage()
.withMessageIdentifier(sub.messageIdentifier)
.toTopic(sub.topic.rawTopic)
.atQos(sub.qos);
connectionHandler!.sendMessage(msg);
return sub;
} on Exception catch (e) {
MqttLogger.log(
'SubscriptionsManager::createNewSubscription '
'exception raised, text is $e',
);
if (onSubscribeFail != null) {
onSubscribeFail!(topic);
}
return null;
}
}