public async Task <MqttClientSubscribeResult> SubscribeAsync(MqttClientSubscribeOptions options, CancellationToken cancellationToken) { if (options == null) { throw new ArgumentNullException(nameof(options)); } foreach (var topicFilter in options.TopicFilters) { MqttTopicValidator.ThrowIfInvalidSubscribe(topicFilter.Topic); } ThrowIfDisposed(); ThrowIfNotConnected(); var subscribePacket = _adapter.PacketFormatterAdapter.DataConverter.CreateSubscribePacket(options); subscribePacket.PacketIdentifier = _packetIdentifierProvider.GetNextPacketIdentifier(); var subAckPacket = await SendAndReceiveAsync <MqttSubAckPacket>(subscribePacket, cancellationToken).ConfigureAwait(false); return(_adapter.PacketFormatterAdapter.DataConverter.CreateClientSubscribeResult(subscribePacket, subAckPacket)); }
public void Invalid_Topic_Empty() { MqttTopicValidator.ThrowIfInvalidSubscribe(string.Empty); }
public void Invalid_Topic_Hash_In_Between() { MqttTopicValidator.ThrowIfInvalidSubscribe("/a/#/c"); }
public void Valid_Topic_Only_Hash() { MqttTopicValidator.ThrowIfInvalidSubscribe("#"); }
public void Valid_Topic_Hash_Last_Char() { MqttTopicValidator.ThrowIfInvalidSubscribe("/a/#"); }
public void Valid_Topic_Plus_In_Between() { MqttTopicValidator.ThrowIfInvalidSubscribe("/a/+/c"); }
public void Valid_Topic() { MqttTopicValidator.ThrowIfInvalidSubscribe("/a/b/c"); }