| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- using MQTTnet.Packets;
- using MQTTnet.Protocol;
- using System;
- using System.Collections.Generic;
- namespace MQTTnet.Client.Subscribing
- {
- public class MqttClientSubscribeOptionsBuilder
- {
- private readonly MqttClientSubscribeOptions _subscribeOptions = new MqttClientSubscribeOptions();
- public MqttClientSubscribeOptionsBuilder WithUserProperty(string name, string value)
- {
- if (name == null) throw new ArgumentNullException(nameof(name));
- if (value == null) throw new ArgumentNullException(nameof(value));
- if (_subscribeOptions.UserProperties == null)
- {
- _subscribeOptions.UserProperties = new List<MqttUserProperty>();
- }
- _subscribeOptions.UserProperties.Add(new MqttUserProperty(name, value));
- return this;
- }
- public MqttClientSubscribeOptionsBuilder WithSubscriptionIdentifier(uint? subscriptionIdentifier)
- {
- _subscribeOptions.SubscriptionIdentifier = subscriptionIdentifier;
- return this;
- }
- public MqttClientSubscribeOptionsBuilder WithTopicFilter(
- string topic,
- MqttQualityOfServiceLevel qualityOfServiceLevel = MqttQualityOfServiceLevel.AtMostOnce,
- bool? noLocal = null,
- bool? retainAsPublished = null,
- MqttRetainHandling? retainHandling = null)
- {
- return WithTopicFilter(new MqttTopicFilter
- {
- Topic = topic,
- QualityOfServiceLevel = qualityOfServiceLevel,
- NoLocal = noLocal,
- RetainAsPublished = retainAsPublished,
- RetainHandling = retainHandling
- });
- }
- public MqttClientSubscribeOptionsBuilder WithTopicFilter(Action<MqttTopicFilterBuilder> topicFilterBuilder)
- {
- if (topicFilterBuilder == null) throw new ArgumentNullException(nameof(topicFilterBuilder));
- var internalTopicFilterBuilder = new MqttTopicFilterBuilder();
- topicFilterBuilder(internalTopicFilterBuilder);
- return WithTopicFilter(internalTopicFilterBuilder);
- }
- public MqttClientSubscribeOptionsBuilder WithTopicFilter(MqttTopicFilterBuilder topicFilterBuilder)
- {
- if (topicFilterBuilder == null) throw new ArgumentNullException(nameof(topicFilterBuilder));
- return WithTopicFilter(topicFilterBuilder.Build());
- }
- public MqttClientSubscribeOptionsBuilder WithTopicFilter(MqttTopicFilter topicFilter)
- {
- if (topicFilter == null) throw new ArgumentNullException(nameof(topicFilter));
- if (_subscribeOptions.TopicFilters == null)
- {
- _subscribeOptions.TopicFilters = new List<MqttTopicFilter>();
- }
- _subscribeOptions.TopicFilters.Add(topicFilter);
- return this;
- }
- public MqttClientSubscribeOptions Build()
- {
- return _subscribeOptions;
- }
- }
- }
|