Performance optimizations

This commit is contained in:
Christian Kratky
2017-11-25 23:10:48 +01:00
parent 24ab285066
commit 611fabcd01
11 changed files with 105 additions and 88 deletions
@@ -64,23 +64,23 @@ namespace MQTTnet.Server
return unsubscribePacket.CreateResponse<MqttUnsubAckPacket>();
}
public CheckSubscriptionsResult CheckSubscriptions(MqttPublishPacket publishPacket)
public CheckSubscriptionsResult CheckSubscriptions(MqttApplicationMessage applicationMessage)
{
if (publishPacket == null) throw new ArgumentNullException(nameof(publishPacket));
if (applicationMessage == null) throw new ArgumentNullException(nameof(applicationMessage));
lock (_subscriptions)
{
foreach (var subscription in _subscriptions)
{
if (!MqttTopicFilterComparer.IsMatch(publishPacket.Topic, subscription.Key))
if (!MqttTopicFilterComparer.IsMatch(applicationMessage.Topic, subscription.Key))
{
continue;
}
var effectiveQos = subscription.Value;
if (publishPacket.QualityOfServiceLevel < effectiveQos)
if (applicationMessage.QualityOfServiceLevel < effectiveQos)
{
effectiveQos = publishPacket.QualityOfServiceLevel;
effectiveQos = applicationMessage.QualityOfServiceLevel;
}
return new CheckSubscriptionsResult