diff --git a/.github/workflows/ReleaseNotes.md b/.github/workflows/ReleaseNotes.md index b9988dda..8b92cf20 100644 --- a/.github/workflows/ReleaseNotes.md +++ b/.github/workflows/ReleaseNotes.md @@ -1 +1,2 @@ -* [Client] Fixed MQTTv5 protocol violation in PUBLISH packets (#1423). \ No newline at end of file +* [Client] Fixed MQTTv5 protocol violation in PUBLISH packets (#1423). +* [Client] Added missing "WithWill..." methods in _MqttClientOptionsBuilder_. \ No newline at end of file diff --git a/Source/MQTTnet/Client/Options/MqttClientOptionsBuilder.cs b/Source/MQTTnet/Client/Options/MqttClientOptionsBuilder.cs index 4896d2b6..626a9057 100644 --- a/Source/MQTTnet/Client/Options/MqttClientOptionsBuilder.cs +++ b/Source/MQTTnet/Client/Options/MqttClientOptionsBuilder.cs @@ -379,6 +379,17 @@ namespace MQTTnet.Client _options.WillPayload = willPayload; return this; } + + public MqttClientOptionsBuilder WithWillPayload(string willPayload) + { + if (string.IsNullOrEmpty(willPayload)) + { + return WithWillPayload((byte[])null); + } + + _options.WillPayload = Encoding.UTF8.GetBytes(willPayload); + return this; + } public MqttClientOptionsBuilder WithWillQualityOfServiceLevel(MqttQualityOfServiceLevel willQualityOfServiceLevel) { @@ -391,5 +402,46 @@ namespace MQTTnet.Client _options.WillTopic = willTopic; return this; } + + public MqttClientOptionsBuilder WithWillRetain(bool willRetain = true) + { + _options.WillRetain = willRetain; + return this; + } + + public MqttClientOptionsBuilder WithWillContentType(string willContentType) + { + _options.WillContentType = willContentType; + return this; + } + + public MqttClientOptionsBuilder WithWillCorrelationData(byte[] willCorrelationData) + { + _options.WillCorrelationData = willCorrelationData; + return this; + } + + public MqttClientOptionsBuilder WithWillResponseTopic(string willResponseTopic) + { + _options.WillResponseTopic = willResponseTopic; + return this; + } + + public MqttClientOptionsBuilder WithWillPayloadFormatIndicator(MqttPayloadFormatIndicator willPayloadFormatIndicator) + { + _options.WillPayloadFormatIndicator = willPayloadFormatIndicator; + return this; + } + + public MqttClientOptionsBuilder WithWillUserProperty(string name, string value) + { + if (_options.WillUserProperties == null) + { + _options.WillUserProperties = new List(); + } + + _options.WillUserProperties.Add(new MqttUserProperty(name, value)); + return this; + } } } \ No newline at end of file