public Task <MqttClientPublishResult> PublishAsync(MqttApplicationMessage applicationMessage, CancellationToken cancellationToken) { cancellationToken.ThrowIfCancellationRequested(); MqttTopicValidator.ThrowIfInvalid(applicationMessage); ThrowIfDisposed(); ThrowIfNotConnected(); var publishPacket = _adapter.PacketFormatterAdapter.DataConverter.CreatePublishPacket(applicationMessage); switch (applicationMessage.QualityOfServiceLevel) { case MqttQualityOfServiceLevel.AtMostOnce: { return(PublishAtMostOnce(publishPacket, cancellationToken)); } case MqttQualityOfServiceLevel.AtLeastOnce: { return(PublishAtLeastOnceAsync(publishPacket, cancellationToken)); } case MqttQualityOfServiceLevel.ExactlyOnce: { return(PublishExactlyOnceAsync(publishPacket, cancellationToken)); } default: { throw new NotSupportedException(); } } }
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"); }
public void Invalid_Topic_Hash() { MqttTopicValidator.ThrowIfInvalid("/a/#/c"); }
public void Invalid_Topic_Plus() { MqttTopicValidator.ThrowIfInvalid("/a/+/c"); }