Beispiel #1
0
        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));
        }
Beispiel #2
0
 public void Invalid_Topic_Empty()
 {
     MqttTopicValidator.ThrowIfInvalidSubscribe(string.Empty);
 }
Beispiel #3
0
 public void Invalid_Topic_Hash_In_Between()
 {
     MqttTopicValidator.ThrowIfInvalidSubscribe("/a/#/c");
 }
Beispiel #4
0
 public void Valid_Topic_Only_Hash()
 {
     MqttTopicValidator.ThrowIfInvalidSubscribe("#");
 }
Beispiel #5
0
 public void Valid_Topic_Hash_Last_Char()
 {
     MqttTopicValidator.ThrowIfInvalidSubscribe("/a/#");
 }
Beispiel #6
0
 public void Valid_Topic_Plus_In_Between()
 {
     MqttTopicValidator.ThrowIfInvalidSubscribe("/a/+/c");
 }
Beispiel #7
0
 public void Valid_Topic()
 {
     MqttTopicValidator.ThrowIfInvalidSubscribe("/a/b/c");
 }