Fix async issues

This commit is contained in:
Christian
2018-02-21 20:43:09 +01:00
parent 034e7fd750
commit 1760dc7d35
@@ -145,16 +145,16 @@ namespace MQTTnet.Server
PendingMessagesQueue.Enqueue(publishPacket); PendingMessagesQueue.Enqueue(publishPacket);
} }
public Task SubscribeAsync(IList<TopicFilter> topicFilters) public async Task SubscribeAsync(IList<TopicFilter> topicFilters)
{ {
if (topicFilters == null) throw new ArgumentNullException(nameof(topicFilters)); if (topicFilters == null) throw new ArgumentNullException(nameof(topicFilters));
var response = SubscriptionsManager.SubscribeAsync(new MqttSubscribePacket await SubscriptionsManager.SubscribeAsync(new MqttSubscribePacket
{ {
TopicFilters = topicFilters TopicFilters = topicFilters
}); }).ConfigureAwait(false);
return response; await EnqueueSubscribedRetainedMessagesAsync(topicFilters).ConfigureAwait(false);
} }
public Task UnsubscribeAsync(IList<string> topicFilters) public Task UnsubscribeAsync(IList<string> topicFilters)
@@ -270,7 +270,7 @@ namespace MQTTnet.Server
await StopAsync().ConfigureAwait(false); await StopAsync().ConfigureAwait(false);
} }
await EnqueueSubscribedRetainedMessagesAsync(subscribePacket).ConfigureAwait(false); await EnqueueSubscribedRetainedMessagesAsync(subscribePacket.TopicFilters).ConfigureAwait(false);
} }
private async Task HandleIncomingUnsubscribePacketAsync(IMqttChannelAdapter adapter, MqttUnsubscribePacket unsubscribePacket, CancellationToken cancellationToken) private async Task HandleIncomingUnsubscribePacketAsync(IMqttChannelAdapter adapter, MqttUnsubscribePacket unsubscribePacket, CancellationToken cancellationToken)
@@ -279,12 +279,12 @@ namespace MQTTnet.Server
await adapter.SendPacketsAsync(_options.DefaultCommunicationTimeout, cancellationToken, unsubscribeResult); await adapter.SendPacketsAsync(_options.DefaultCommunicationTimeout, cancellationToken, unsubscribeResult);
} }
private async Task EnqueueSubscribedRetainedMessagesAsync(MqttSubscribePacket subscribePacket) private async Task EnqueueSubscribedRetainedMessagesAsync(ICollection<TopicFilter> topicFilters)
{ {
var retainedMessages = await _retainedMessagesManager.GetSubscribedMessagesAsync(subscribePacket); var retainedMessages = await _retainedMessagesManager.GetSubscribedMessagesAsync(topicFilters);
foreach (var publishPacket in retainedMessages) foreach (var applicationMessage in retainedMessages)
{ {
await EnqueueApplicationMessageAsync(publishPacket); await EnqueueApplicationMessageAsync(applicationMessage).ConfigureAwait(false);
} }
} }