From 3600ebbc624333d3a92d93ace214c37ef14fa4b6 Mon Sep 17 00:00:00 2001 From: Federico Di Gregorio Date: Wed, 18 Dec 2019 10:25:24 +0100 Subject: [PATCH] Create default MqttRetainedMessagesManager in options --- .../Exceptions/MqttConfigurationException.cs | 21 +++++++++++++++++++ Source/MQTTnet/Server/MqttServer.cs | 5 ++++- Source/MQTTnet/Server/MqttServerOptions.cs | 2 +- 3 files changed, 26 insertions(+), 2 deletions(-) create mode 100644 Source/MQTTnet/Exceptions/MqttConfigurationException.cs diff --git a/Source/MQTTnet/Exceptions/MqttConfigurationException.cs b/Source/MQTTnet/Exceptions/MqttConfigurationException.cs new file mode 100644 index 00000000..4d10faf3 --- /dev/null +++ b/Source/MQTTnet/Exceptions/MqttConfigurationException.cs @@ -0,0 +1,21 @@ +using System; + +namespace MQTTnet.Exceptions +{ + public class MqttConfigurationException : Exception + { + protected MqttConfigurationException() + { + } + + public MqttConfigurationException(Exception innerException) + : base(innerException.Message, innerException) + { + } + + public MqttConfigurationException(string message) + : base(message) + { + } + } +} diff --git a/Source/MQTTnet/Server/MqttServer.cs b/Source/MQTTnet/Server/MqttServer.cs index dee22740..4c5ab620 100644 --- a/Source/MQTTnet/Server/MqttServer.cs +++ b/Source/MQTTnet/Server/MqttServer.cs @@ -7,6 +7,7 @@ using MQTTnet.Adapter; using MQTTnet.Client.Publishing; using MQTTnet.Client.Receiving; using MQTTnet.Diagnostics; +using MQTTnet.Exceptions; using MQTTnet.Protocol; using MQTTnet.Server.Status; @@ -117,11 +118,13 @@ namespace MQTTnet.Server { Options = options ?? throw new ArgumentNullException(nameof(options)); + if (Options.RetainedMessagesManager == null) throw new MqttConfigurationException("options.RetainedMessagesManager should not be null."); + if (_cancellationTokenSource != null) throw new InvalidOperationException("The server is already started."); _cancellationTokenSource = new CancellationTokenSource(); - _retainedMessagesManager = Options.RetainedMessagesManager ?? new MqttRetainedMessagesManager(); + _retainedMessagesManager = Options.RetainedMessagesManager; await _retainedMessagesManager.Start(Options, _logger); await _retainedMessagesManager.LoadMessagesAsync().ConfigureAwait(false); diff --git a/Source/MQTTnet/Server/MqttServerOptions.cs b/Source/MQTTnet/Server/MqttServerOptions.cs index c6c7c4f6..9773e721 100644 --- a/Source/MQTTnet/Server/MqttServerOptions.cs +++ b/Source/MQTTnet/Server/MqttServerOptions.cs @@ -30,6 +30,6 @@ namespace MQTTnet.Server public IMqttServerStorage Storage { get; set; } - public IMqttRetainedMessagesManager RetainedMessagesManager { get; set; } + public IMqttRetainedMessagesManager RetainedMessagesManager { get; set; } = new MqttRetainedMessagesManager(); } }