diff --git a/Source/MQTTnet.AspnetCore/Client/MqttClientConnectionContextFactory.cs b/Source/MQTTnet.AspnetCore/Client/MqttClientConnectionContextFactory.cs index 93581335..7ec8b6bc 100644 --- a/Source/MQTTnet.AspnetCore/Client/MqttClientConnectionContextFactory.cs +++ b/Source/MQTTnet.AspnetCore/Client/MqttClientConnectionContextFactory.cs @@ -1,15 +1,16 @@ using MQTTnet.Adapter; using MQTTnet.AspNetCore.Client.Tcp; -using MQTTnet.Client.Options; using MQTTnet.Formatter; using System; using System.Net; +using MQTTnet.Client; +using MQTTnet.Diagnostics; namespace MQTTnet.AspNetCore.Client { public class MqttClientConnectionContextFactory : IMqttClientAdapterFactory { - public IMqttChannelAdapter CreateClientAdapter(IMqttClientOptions options) + public IMqttChannelAdapter CreateClientAdapter(IMqttClientOptions options, IMqttNetLogger logger) { if (options == null) throw new ArgumentNullException(nameof(options)); diff --git a/Source/MQTTnet.AspnetCore/Extensions/ServiceCollectionExtensions.cs b/Source/MQTTnet.AspnetCore/Extensions/ServiceCollectionExtensions.cs index 600fd97b..fa16ce79 100644 --- a/Source/MQTTnet.AspnetCore/Extensions/ServiceCollectionExtensions.cs +++ b/Source/MQTTnet.AspnetCore/Extensions/ServiceCollectionExtensions.cs @@ -3,7 +3,6 @@ using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; using MQTTnet.Adapter; using MQTTnet.Diagnostics; -using MQTTnet.Diagnostics.Logger; using MQTTnet.Implementations; using MQTTnet.Server; diff --git a/Source/MQTTnet.AspnetCore/MqttConnectionHandler.cs b/Source/MQTTnet.AspnetCore/MqttConnectionHandler.cs index 49fdb945..37a3cf85 100644 --- a/Source/MQTTnet.AspnetCore/MqttConnectionHandler.cs +++ b/Source/MQTTnet.AspnetCore/MqttConnectionHandler.cs @@ -4,6 +4,7 @@ using MQTTnet.Adapter; using MQTTnet.Server; using System; using System.Threading.Tasks; +using MQTTnet.Diagnostics; using MQTTnet.Formatter; namespace MQTTnet.AspNetCore @@ -33,7 +34,7 @@ namespace MQTTnet.AspNetCore } } - public Task StartAsync(MqttServerOptions options) + public Task StartAsync(MqttServerOptions options, IMqttNetLogger logger) { return Task.CompletedTask; } diff --git a/Source/MQTTnet.AspnetCore/MqttHostedServer.cs b/Source/MQTTnet.AspnetCore/MqttHostedServer.cs index bcffb305..f65dde47 100644 --- a/Source/MQTTnet.AspnetCore/MqttHostedServer.cs +++ b/Source/MQTTnet.AspnetCore/MqttHostedServer.cs @@ -3,7 +3,7 @@ using System.Threading; using System.Threading.Tasks; using Microsoft.Extensions.Hosting; using MQTTnet.Adapter; -using MQTTnet.Diagnostics.Logger; +using MQTTnet.Diagnostics; using MQTTnet.Server; namespace MQTTnet.AspNetCore diff --git a/Source/MQTTnet.AspnetCore/MqttWebSocketServerAdapter.cs b/Source/MQTTnet.AspnetCore/MqttWebSocketServerAdapter.cs index f1d1fd89..297aebf8 100644 --- a/Source/MQTTnet.AspnetCore/MqttWebSocketServerAdapter.cs +++ b/Source/MQTTnet.AspnetCore/MqttWebSocketServerAdapter.cs @@ -6,23 +6,19 @@ using MQTTnet.Server; using System; using System.Net.WebSockets; using System.Threading.Tasks; -using MQTTnet.Diagnostics.Logger; +using MQTTnet.Diagnostics; namespace MQTTnet.AspNetCore { public sealed class MqttWebSocketServerAdapter : IMqttServerAdapter { - readonly IMqttNetLogger _rootLogger; - - public MqttWebSocketServerAdapter(IMqttNetLogger logger) - { - _rootLogger = logger ?? throw new ArgumentNullException(nameof(logger)); - } - + IMqttNetLogger _logger = new MqttNetNullLogger(); + public Func ClientHandler { get; set; } - public Task StartAsync(MqttServerOptions options) + public Task StartAsync(MqttServerOptions options, IMqttNetLogger logger) { + _logger = logger ?? throw new ArgumentNullException(nameof(logger)); return Task.CompletedTask; } @@ -49,7 +45,7 @@ namespace MQTTnet.AspNetCore var formatter = new MqttPacketFormatterAdapter(writer); var channel = new MqttWebSocketChannel(webSocket, endpoint, isSecureConnection, clientCertificate); - using (var channelAdapter = new MqttChannelAdapter(channel, formatter, null, _rootLogger)) + using (var channelAdapter = new MqttChannelAdapter(channel, formatter, null, _logger)) { await clientHandler(channelAdapter).ConfigureAwait(false); } diff --git a/Source/MQTTnet.Extensions.ManagedClient/IManagedMqttClient.cs b/Source/MQTTnet.Extensions.ManagedClient/IManagedMqttClient.cs index 40940f52..13d1958a 100644 --- a/Source/MQTTnet.Extensions.ManagedClient/IManagedMqttClient.cs +++ b/Source/MQTTnet.Extensions.ManagedClient/IManagedMqttClient.cs @@ -1,10 +1,9 @@ -using MQTTnet.Client.Connecting; -using MQTTnet.Client.Disconnecting; -using System; +using System; using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; using MQTTnet.Client; +using MQTTnet.Packets; namespace MQTTnet.Extensions.ManagedClient { diff --git a/Source/MQTTnet.Extensions.ManagedClient/IManagedMqttClientOptions.cs b/Source/MQTTnet.Extensions.ManagedClient/IManagedMqttClientOptions.cs index 74028dae..3bfa248a 100644 --- a/Source/MQTTnet.Extensions.ManagedClient/IManagedMqttClientOptions.cs +++ b/Source/MQTTnet.Extensions.ManagedClient/IManagedMqttClientOptions.cs @@ -1,5 +1,5 @@ using System; -using MQTTnet.Client.Options; +using MQTTnet.Client; using MQTTnet.Server; namespace MQTTnet.Extensions.ManagedClient diff --git a/Source/MQTTnet.Extensions.ManagedClient/ManagedMqttClient.cs b/Source/MQTTnet.Extensions.ManagedClient/ManagedMqttClient.cs index 608e5a72..389ec72e 100644 --- a/Source/MQTTnet.Extensions.ManagedClient/ManagedMqttClient.cs +++ b/Source/MQTTnet.Extensions.ManagedClient/ManagedMqttClient.cs @@ -1,9 +1,4 @@ using MQTTnet.Client; -using MQTTnet.Client.Connecting; -using MQTTnet.Client.Disconnecting; -using MQTTnet.Client.Publishing; -using MQTTnet.Client.Receiving; -using MQTTnet.Diagnostics; using MQTTnet.Exceptions; using MQTTnet.Internal; using MQTTnet.Protocol; @@ -13,7 +8,8 @@ using System.Collections.Generic; using System.Linq; using System.Threading; using System.Threading.Tasks; -using MQTTnet.Diagnostics.Logger; +using MQTTnet.Diagnostics; +using MQTTnet.Packets; namespace MQTTnet.Extensions.ManagedClient { @@ -72,13 +68,7 @@ namespace MQTTnet.Extensions.ManagedClient get => InternalClient.DisconnectedHandler; set => InternalClient.DisconnectedHandler = value; } - - public IMqttApplicationMessageReceivedHandler ApplicationMessageReceivedHandler - { - get => InternalClient.ApplicationMessageReceivedHandler; - set => InternalClient.ApplicationMessageReceivedHandler = value; - } - + public event Func ApplicationMessageReceivedAsync { add => InternalClient.ApplicationMessageReceivedAsync += value; diff --git a/Source/MQTTnet.Extensions.ManagedClient/ManagedMqttClientExtensions.cs b/Source/MQTTnet.Extensions.ManagedClient/ManagedMqttClientExtensions.cs index 518f78dc..29e8edaf 100644 --- a/Source/MQTTnet.Extensions.ManagedClient/ManagedMqttClientExtensions.cs +++ b/Source/MQTTnet.Extensions.ManagedClient/ManagedMqttClientExtensions.cs @@ -1,12 +1,10 @@ -using MQTTnet.Client.Connecting; -using MQTTnet.Client.Disconnecting; -using MQTTnet.Client.Publishing; -using MQTTnet.Client.Receiving; -using MQTTnet.Protocol; +using MQTTnet.Protocol; using System; using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; +using MQTTnet.Client; +using MQTTnet.Packets; namespace MQTTnet.Extensions.ManagedClient { @@ -75,42 +73,7 @@ namespace MQTTnet.Extensions.ManagedClient client.DisconnectedHandler = handler; return client; } - - public static TReceiver UseApplicationMessageReceivedHandler(this TReceiver receiver, Func handler) - where TReceiver : IMqttApplicationMessageReceiver - { - if (receiver == null) throw new ArgumentNullException(nameof(receiver)); - - if (handler == null) - { - return receiver.UseApplicationMessageReceivedHandler((IMqttApplicationMessageReceivedHandler)null); - } - - return receiver.UseApplicationMessageReceivedHandler(new MqttApplicationMessageReceivedHandlerDelegate(handler)); - } - - public static TReceiver UseApplicationMessageReceivedHandler(this TReceiver receiver, Action handler) - where TReceiver : IMqttApplicationMessageReceiver - { - if (receiver == null) throw new ArgumentNullException(nameof(receiver)); - - if (handler == null) - { - return receiver.UseApplicationMessageReceivedHandler((IMqttApplicationMessageReceivedHandler)null); - } - - return receiver.UseApplicationMessageReceivedHandler(new MqttApplicationMessageReceivedHandlerDelegate(handler)); - } - - public static TReceiver UseApplicationMessageReceivedHandler(this TReceiver receiver, IMqttApplicationMessageReceivedHandler handler) - where TReceiver : IMqttApplicationMessageReceiver - { - if (receiver == null) throw new ArgumentNullException(nameof(receiver)); - - receiver.ApplicationMessageReceivedHandler = handler; - return receiver; - } - + public static Task SubscribeAsync(this IManagedMqttClient client, params MqttTopicFilter[] topicFilters) { if (client == null) throw new ArgumentNullException(nameof(client)); diff --git a/Source/MQTTnet.Extensions.ManagedClient/ManagedMqttClientOptions.cs b/Source/MQTTnet.Extensions.ManagedClient/ManagedMqttClientOptions.cs index f948055e..fca888b7 100644 --- a/Source/MQTTnet.Extensions.ManagedClient/ManagedMqttClientOptions.cs +++ b/Source/MQTTnet.Extensions.ManagedClient/ManagedMqttClientOptions.cs @@ -1,5 +1,5 @@ using System; -using MQTTnet.Client.Options; +using MQTTnet.Client; using MQTTnet.Server; namespace MQTTnet.Extensions.ManagedClient diff --git a/Source/MQTTnet.Extensions.ManagedClient/ManagedMqttClientOptionsBuilder.cs b/Source/MQTTnet.Extensions.ManagedClient/ManagedMqttClientOptionsBuilder.cs index dec105ff..5e4adb6a 100644 --- a/Source/MQTTnet.Extensions.ManagedClient/ManagedMqttClientOptionsBuilder.cs +++ b/Source/MQTTnet.Extensions.ManagedClient/ManagedMqttClientOptionsBuilder.cs @@ -1,5 +1,5 @@ using System; -using MQTTnet.Client.Options; +using MQTTnet.Client; using MQTTnet.Server; namespace MQTTnet.Extensions.ManagedClient diff --git a/Source/MQTTnet.Extensions.ManagedClient/MqttFactoryExtensions.cs b/Source/MQTTnet.Extensions.ManagedClient/MqttFactoryExtensions.cs index e8fda4a9..9323ceb2 100644 --- a/Source/MQTTnet.Extensions.ManagedClient/MqttFactoryExtensions.cs +++ b/Source/MQTTnet.Extensions.ManagedClient/MqttFactoryExtensions.cs @@ -1,5 +1,5 @@ using System; -using MQTTnet.Diagnostics.Logger; +using MQTTnet.Diagnostics; namespace MQTTnet.Extensions.ManagedClient { diff --git a/Source/MQTTnet.Extensions.Rpc/MqttRpcClient.cs b/Source/MQTTnet.Extensions.Rpc/MqttRpcClient.cs index 6450f2cf..cdf83291 100644 --- a/Source/MQTTnet.Extensions.Rpc/MqttRpcClient.cs +++ b/Source/MQTTnet.Extensions.Rpc/MqttRpcClient.cs @@ -7,7 +7,6 @@ using System; using System.Collections.Concurrent; using System.Threading; using System.Threading.Tasks; -using MQTTnet.Client.Subscribing; using MQTTnet.Implementations; namespace MQTTnet.Extensions.Rpc @@ -17,23 +16,13 @@ namespace MQTTnet.Extensions.Rpc readonly ConcurrentDictionary> _waitingCalls = new ConcurrentDictionary>(); readonly IMqttClient _mqttClient; readonly IMqttRpcClientOptions _options; - readonly RpcAwareApplicationMessageReceivedHandler _applicationMessageReceivedHandler; - - [Obsolete("Use MqttRpcClient(IMqttClient mqttClient, IMqttRpcClientOptions options).")] - public MqttRpcClient(IMqttClient mqttClient) : this(mqttClient, new MqttRpcClientOptions()) - { - } - + public MqttRpcClient(IMqttClient mqttClient, IMqttRpcClientOptions options) { _mqttClient = mqttClient ?? throw new ArgumentNullException(nameof(mqttClient)); _options = options ?? throw new ArgumentNullException(nameof(options)); - _applicationMessageReceivedHandler = new RpcAwareApplicationMessageReceivedHandler( - mqttClient.ApplicationMessageReceivedHandler, - HandleApplicationMessageReceivedAsync); - - _mqttClient.ApplicationMessageReceivedHandler = _applicationMessageReceivedHandler; + _mqttClient.ApplicationMessageReceivedAsync += HandleApplicationMessageReceivedAsync; } public async Task ExecuteAsync(TimeSpan timeout, string methodName, byte[] payload, MqttQualityOfServiceLevel qualityOfServiceLevel) @@ -59,12 +48,7 @@ namespace MQTTnet.Extensions.Rpc public async Task ExecuteAsync(string methodName, byte[] payload, MqttQualityOfServiceLevel qualityOfServiceLevel, CancellationToken cancellationToken) { if (methodName == null) throw new ArgumentNullException(nameof(methodName)); - - if (!(_mqttClient.ApplicationMessageReceivedHandler is RpcAwareApplicationMessageReceivedHandler)) - { - throw new InvalidOperationException("The application message received handler was modified."); - } - + var topicNames = _options.TopicGenerationStrategy.CreateRpcTopics(new TopicGenerationContext { MethodName = methodName, @@ -146,7 +130,7 @@ namespace MQTTnet.Extensions.Rpc public void Dispose() { - _mqttClient.ApplicationMessageReceivedHandler = _applicationMessageReceivedHandler.OriginalHandler; + _mqttClient.ApplicationMessageReceivedAsync -= HandleApplicationMessageReceivedAsync; foreach (var tcs in _waitingCalls) { diff --git a/Source/MQTTnet.Extensions.Rpc/RpcAwareApplicationMessageReceivedHandler.cs b/Source/MQTTnet.Extensions.Rpc/RpcAwareApplicationMessageReceivedHandler.cs deleted file mode 100644 index 5d43eb68..00000000 --- a/Source/MQTTnet.Extensions.Rpc/RpcAwareApplicationMessageReceivedHandler.cs +++ /dev/null @@ -1,32 +0,0 @@ -using System; -using System.Threading.Tasks; -using MQTTnet.Client.Receiving; - -namespace MQTTnet.Extensions.Rpc -{ - public sealed class RpcAwareApplicationMessageReceivedHandler : IMqttApplicationMessageReceivedHandler - { - readonly Func _handleReceivedApplicationMessageAsync; - - public RpcAwareApplicationMessageReceivedHandler( - IMqttApplicationMessageReceivedHandler originalHandler, - Func handleReceivedApplicationMessageAsync) - { - OriginalHandler = originalHandler; - _handleReceivedApplicationMessageAsync = handleReceivedApplicationMessageAsync ?? throw new ArgumentNullException(nameof(handleReceivedApplicationMessageAsync)); - } - - public IMqttApplicationMessageReceivedHandler OriginalHandler { get; } - - public async Task HandleApplicationMessageReceivedAsync(MqttApplicationMessageReceivedEventArgs eventArgs) - { - // First try to check if there is a pending RPC call! - await _handleReceivedApplicationMessageAsync(eventArgs).ConfigureAwait(false); - - if (OriginalHandler != null) - { - await OriginalHandler.HandleApplicationMessageReceivedAsync(eventArgs).ConfigureAwait(false); - } - } - } -} diff --git a/Source/MQTTnet.Extensions.WebSocket4Net/MqttFactoryExtensions.cs b/Source/MQTTnet.Extensions.WebSocket4Net/MqttFactoryExtensions.cs index 011ca945..c13a3708 100644 --- a/Source/MQTTnet.Extensions.WebSocket4Net/MqttFactoryExtensions.cs +++ b/Source/MQTTnet.Extensions.WebSocket4Net/MqttFactoryExtensions.cs @@ -8,7 +8,7 @@ namespace MQTTnet.Extensions.WebSocket4Net { if (mqttFactory == null) throw new ArgumentNullException(nameof(mqttFactory)); - return mqttFactory.UseClientAdapterFactory(new WebSocket4NetMqttClientAdapterFactory(mqttFactory.DefaultLogger)); + return mqttFactory.UseClientAdapterFactory(new WebSocket4NetMqttClientAdapterFactory()); } } } diff --git a/Source/MQTTnet.Extensions.WebSocket4Net/WebSocket4NetMqttChannel.cs b/Source/MQTTnet.Extensions.WebSocket4Net/WebSocket4NetMqttChannel.cs index e46f4cb2..aa2efcc8 100644 --- a/Source/MQTTnet.Extensions.WebSocket4Net/WebSocket4NetMqttChannel.cs +++ b/Source/MQTTnet.Extensions.WebSocket4Net/WebSocket4NetMqttChannel.cs @@ -8,9 +8,8 @@ using System.Security.Cryptography.X509Certificates; using System.Threading; using System.Threading.Tasks; using MQTTnet.Channel; -using MQTTnet.Client.Options; +using MQTTnet.Client; using MQTTnet.Exceptions; -using MQTTnet.Internal; using SuperSocket.ClientEngine; using WebSocket4Net; diff --git a/Source/MQTTnet.Extensions.WebSocket4Net/WebSocket4NetMqttClientAdapterFactory.cs b/Source/MQTTnet.Extensions.WebSocket4Net/WebSocket4NetMqttClientAdapterFactory.cs index e4e72cce..1fb17bbd 100644 --- a/Source/MQTTnet.Extensions.WebSocket4Net/WebSocket4NetMqttClientAdapterFactory.cs +++ b/Source/MQTTnet.Extensions.WebSocket4Net/WebSocket4NetMqttClientAdapterFactory.cs @@ -1,23 +1,15 @@ using MQTTnet.Adapter; -using MQTTnet.Client.Options; -using MQTTnet.Diagnostics; using MQTTnet.Formatter; using MQTTnet.Implementations; using System; -using MQTTnet.Diagnostics.Logger; +using MQTTnet.Client; +using MQTTnet.Diagnostics; namespace MQTTnet.Extensions.WebSocket4Net { public sealed class WebSocket4NetMqttClientAdapterFactory : IMqttClientAdapterFactory { - readonly IMqttNetLogger _logger; - - public WebSocket4NetMqttClientAdapterFactory(IMqttNetLogger logger) - { - _logger = logger ?? throw new ArgumentNullException(nameof(logger)); - } - - public IMqttChannelAdapter CreateClientAdapter(IMqttClientOptions options) + public IMqttChannelAdapter CreateClientAdapter(IMqttClientOptions options, IMqttNetLogger logger) { if (options == null) throw new ArgumentNullException(nameof(options)); @@ -29,7 +21,7 @@ namespace MQTTnet.Extensions.WebSocket4Net new MqttTcpChannel(options), new MqttPacketFormatterAdapter(options.ProtocolVersion), options.PacketInspector, - _logger); + logger); } case MqttClientWebSocketOptions webSocketOptions: @@ -38,7 +30,7 @@ namespace MQTTnet.Extensions.WebSocket4Net new WebSocket4NetMqttChannel(options, webSocketOptions), new MqttPacketFormatterAdapter(options.ProtocolVersion), options.PacketInspector, - _logger); + logger); } default: diff --git a/Source/MQTTnet/Adapter/IMqttClientAdapterFactory.cs b/Source/MQTTnet/Adapter/IMqttClientAdapterFactory.cs index 9d0e5996..b0eb5403 100644 --- a/Source/MQTTnet/Adapter/IMqttClientAdapterFactory.cs +++ b/Source/MQTTnet/Adapter/IMqttClientAdapterFactory.cs @@ -1,9 +1,10 @@ -using MQTTnet.Client.Options; +using MQTTnet.Client; +using MQTTnet.Diagnostics; namespace MQTTnet.Adapter { public interface IMqttClientAdapterFactory { - IMqttChannelAdapter CreateClientAdapter(IMqttClientOptions options); + IMqttChannelAdapter CreateClientAdapter(IMqttClientOptions options, IMqttNetLogger logger); } } diff --git a/Source/MQTTnet/Adapter/IMqttServerAdapter.cs b/Source/MQTTnet/Adapter/IMqttServerAdapter.cs index 78198f11..fdcfcc8e 100644 --- a/Source/MQTTnet/Adapter/IMqttServerAdapter.cs +++ b/Source/MQTTnet/Adapter/IMqttServerAdapter.cs @@ -1,5 +1,6 @@ using System; using System.Threading.Tasks; +using MQTTnet.Diagnostics; using MQTTnet.Server; namespace MQTTnet.Adapter @@ -8,7 +9,7 @@ namespace MQTTnet.Adapter { Func ClientHandler { get; set; } - Task StartAsync(MqttServerOptions options); + Task StartAsync(MqttServerOptions options, IMqttNetLogger logger); Task StopAsync(); } } diff --git a/Source/MQTTnet/Adapter/MqttChannelAdapter.cs b/Source/MQTTnet/Adapter/MqttChannelAdapter.cs index b7532a6e..e7670af7 100644 --- a/Source/MQTTnet/Adapter/MqttChannelAdapter.cs +++ b/Source/MQTTnet/Adapter/MqttChannelAdapter.cs @@ -11,8 +11,6 @@ using System.Runtime.InteropServices; using System.Security.Cryptography.X509Certificates; using System.Threading; using System.Threading.Tasks; -using MQTTnet.Diagnostics.Logger; -using MQTTnet.Diagnostics.PacketInspection; namespace MQTTnet.Adapter { diff --git a/Source/MQTTnet/Adapter/MqttConnectingFailedException.cs b/Source/MQTTnet/Adapter/MqttConnectingFailedException.cs index a465bb66..302e89d0 100644 --- a/Source/MQTTnet/Adapter/MqttConnectingFailedException.cs +++ b/Source/MQTTnet/Adapter/MqttConnectingFailedException.cs @@ -1,5 +1,5 @@ using System; -using MQTTnet.Client.Connecting; +using MQTTnet.Client; using MQTTnet.Exceptions; namespace MQTTnet.Adapter diff --git a/Source/MQTTnet/Adapter/MqttPacketInspectorHandler.cs b/Source/MQTTnet/Adapter/MqttPacketInspectorHandler.cs index 828ea1ab..46335bb0 100644 --- a/Source/MQTTnet/Adapter/MqttPacketInspectorHandler.cs +++ b/Source/MQTTnet/Adapter/MqttPacketInspectorHandler.cs @@ -2,8 +2,6 @@ using System; using System.IO; using System.Linq; using MQTTnet.Diagnostics; -using MQTTnet.Diagnostics.Logger; -using MQTTnet.Diagnostics.PacketInspection; using MQTTnet.Formatter; namespace MQTTnet.Adapter diff --git a/Source/MQTTnet/Client/Connecting/IMqttClientConnectedHandler.cs b/Source/MQTTnet/Client/Connecting/IMqttClientConnectedHandler.cs index 8b7be27e..296b259c 100644 --- a/Source/MQTTnet/Client/Connecting/IMqttClientConnectedHandler.cs +++ b/Source/MQTTnet/Client/Connecting/IMqttClientConnectedHandler.cs @@ -1,6 +1,6 @@ using System.Threading.Tasks; -namespace MQTTnet.Client.Connecting +namespace MQTTnet.Client { public interface IMqttClientConnectedHandler { diff --git a/Source/MQTTnet/Client/Connecting/MqttClientConnectResult.cs b/Source/MQTTnet/Client/Connecting/MqttClientConnectResult.cs index 16437932..4dc73c27 100644 --- a/Source/MQTTnet/Client/Connecting/MqttClientConnectResult.cs +++ b/Source/MQTTnet/Client/Connecting/MqttClientConnectResult.cs @@ -2,7 +2,7 @@ using MQTTnet.Packets; using MQTTnet.Protocol; -namespace MQTTnet.Client.Connecting +namespace MQTTnet.Client { public sealed class MqttClientConnectResult { diff --git a/Source/MQTTnet/Client/Connecting/MqttClientConnectResultCode.cs b/Source/MQTTnet/Client/Connecting/MqttClientConnectResultCode.cs index a0dbae7b..09e9bf3e 100644 --- a/Source/MQTTnet/Client/Connecting/MqttClientConnectResultCode.cs +++ b/Source/MQTTnet/Client/Connecting/MqttClientConnectResultCode.cs @@ -1,4 +1,4 @@ -namespace MQTTnet.Client.Connecting +namespace MQTTnet.Client { public enum MqttClientConnectResultCode { diff --git a/Source/MQTTnet/Client/Connecting/MqttClientConnectResultFactory.cs b/Source/MQTTnet/Client/Connecting/MqttClientConnectResultFactory.cs index 0f1b413c..ddacf131 100644 --- a/Source/MQTTnet/Client/Connecting/MqttClientConnectResultFactory.cs +++ b/Source/MQTTnet/Client/Connecting/MqttClientConnectResultFactory.cs @@ -4,7 +4,7 @@ using MQTTnet.Formatter; using MQTTnet.Packets; using MQTTnet.Protocol; -namespace MQTTnet.Client.Connecting +namespace MQTTnet.Client { public sealed class MqttClientConnectResultFactory { diff --git a/Source/MQTTnet/Client/Connecting/MqttClientConnectedEventArgs.cs b/Source/MQTTnet/Client/Connecting/MqttClientConnectedEventArgs.cs index dc65e271..d6553f9b 100644 --- a/Source/MQTTnet/Client/Connecting/MqttClientConnectedEventArgs.cs +++ b/Source/MQTTnet/Client/Connecting/MqttClientConnectedEventArgs.cs @@ -1,6 +1,6 @@ using System; -namespace MQTTnet.Client.Connecting +namespace MQTTnet.Client { public class MqttClientConnectedEventArgs : EventArgs { diff --git a/Source/MQTTnet/Client/Connecting/MqttClientConnectedHandlerDelegate.cs b/Source/MQTTnet/Client/Connecting/MqttClientConnectedHandlerDelegate.cs index 96812afe..23b61f44 100644 --- a/Source/MQTTnet/Client/Connecting/MqttClientConnectedHandlerDelegate.cs +++ b/Source/MQTTnet/Client/Connecting/MqttClientConnectedHandlerDelegate.cs @@ -1,7 +1,7 @@ using System; using System.Threading.Tasks; -namespace MQTTnet.Client.Connecting +namespace MQTTnet.Client { public class MqttClientConnectedHandlerDelegate : IMqttClientConnectedHandler { diff --git a/Source/MQTTnet/Client/Disconnecting/IMqttClientDisconnectedHandler.cs b/Source/MQTTnet/Client/Disconnecting/IMqttClientDisconnectedHandler.cs index 14347bf0..933c0a3f 100644 --- a/Source/MQTTnet/Client/Disconnecting/IMqttClientDisconnectedHandler.cs +++ b/Source/MQTTnet/Client/Disconnecting/IMqttClientDisconnectedHandler.cs @@ -1,6 +1,6 @@ using System.Threading.Tasks; -namespace MQTTnet.Client.Disconnecting +namespace MQTTnet.Client { public interface IMqttClientDisconnectedHandler { diff --git a/Source/MQTTnet/Client/Disconnecting/MqttClientDisconnectOptions.cs b/Source/MQTTnet/Client/Disconnecting/MqttClientDisconnectOptions.cs index ebf41292..2bc33a4f 100644 --- a/Source/MQTTnet/Client/Disconnecting/MqttClientDisconnectOptions.cs +++ b/Source/MQTTnet/Client/Disconnecting/MqttClientDisconnectOptions.cs @@ -1,4 +1,4 @@ -namespace MQTTnet.Client.Disconnecting +namespace MQTTnet.Client { public sealed class MqttClientDisconnectOptions { diff --git a/Source/MQTTnet/Client/Disconnecting/MqttClientDisconnectOptionsBuilder.cs b/Source/MQTTnet/Client/Disconnecting/MqttClientDisconnectOptionsBuilder.cs index c158e918..6c89772c 100644 --- a/Source/MQTTnet/Client/Disconnecting/MqttClientDisconnectOptionsBuilder.cs +++ b/Source/MQTTnet/Client/Disconnecting/MqttClientDisconnectOptionsBuilder.cs @@ -1,4 +1,4 @@ -namespace MQTTnet.Client.Disconnecting +namespace MQTTnet.Client { public sealed class MqttClientDisconnectOptionsBuilder { diff --git a/Source/MQTTnet/Client/Disconnecting/MqttClientDisconnectReason.cs b/Source/MQTTnet/Client/Disconnecting/MqttClientDisconnectReason.cs index cce2377f..cf33f9c9 100644 --- a/Source/MQTTnet/Client/Disconnecting/MqttClientDisconnectReason.cs +++ b/Source/MQTTnet/Client/Disconnecting/MqttClientDisconnectReason.cs @@ -1,4 +1,4 @@ -namespace MQTTnet.Client.Disconnecting +namespace MQTTnet.Client { public enum MqttClientDisconnectReason { diff --git a/Source/MQTTnet/Client/Disconnecting/MqttClientDisconnectedEventArgs.cs b/Source/MQTTnet/Client/Disconnecting/MqttClientDisconnectedEventArgs.cs index 0fc7e490..e62d5590 100644 --- a/Source/MQTTnet/Client/Disconnecting/MqttClientDisconnectedEventArgs.cs +++ b/Source/MQTTnet/Client/Disconnecting/MqttClientDisconnectedEventArgs.cs @@ -1,7 +1,6 @@ using System; -using MQTTnet.Client.Connecting; -namespace MQTTnet.Client.Disconnecting +namespace MQTTnet.Client { public sealed class MqttClientDisconnectedEventArgs : EventArgs { diff --git a/Source/MQTTnet/Client/Disconnecting/MqttClientDisconnectedHandlerDelegate.cs b/Source/MQTTnet/Client/Disconnecting/MqttClientDisconnectedHandlerDelegate.cs index c02443ed..566eac05 100644 --- a/Source/MQTTnet/Client/Disconnecting/MqttClientDisconnectedHandlerDelegate.cs +++ b/Source/MQTTnet/Client/Disconnecting/MqttClientDisconnectedHandlerDelegate.cs @@ -1,7 +1,7 @@ using System; using System.Threading.Tasks; -namespace MQTTnet.Client.Disconnecting +namespace MQTTnet.Client { public class MqttClientDisconnectedHandlerDelegate : IMqttClientDisconnectedHandler { diff --git a/Source/MQTTnet/Client/ExtendedAuthenticationExchange/IMqttExtendedAuthenticationExchangeHandler.cs b/Source/MQTTnet/Client/ExtendedAuthenticationExchange/IMqttExtendedAuthenticationExchangeHandler.cs index 8cd35420..484d0c07 100644 --- a/Source/MQTTnet/Client/ExtendedAuthenticationExchange/IMqttExtendedAuthenticationExchangeHandler.cs +++ b/Source/MQTTnet/Client/ExtendedAuthenticationExchange/IMqttExtendedAuthenticationExchangeHandler.cs @@ -1,6 +1,6 @@ using System.Threading.Tasks; -namespace MQTTnet.Client.ExtendedAuthenticationExchange +namespace MQTTnet.Client { public interface IMqttExtendedAuthenticationExchangeHandler { diff --git a/Source/MQTTnet/Client/ExtendedAuthenticationExchange/MqttExtendedAuthenticationExchangeContext.cs b/Source/MQTTnet/Client/ExtendedAuthenticationExchange/MqttExtendedAuthenticationExchangeContext.cs index 082e9a8d..51c065b5 100644 --- a/Source/MQTTnet/Client/ExtendedAuthenticationExchange/MqttExtendedAuthenticationExchangeContext.cs +++ b/Source/MQTTnet/Client/ExtendedAuthenticationExchange/MqttExtendedAuthenticationExchangeContext.cs @@ -3,7 +3,7 @@ using System.Collections.Generic; using MQTTnet.Packets; using MQTTnet.Protocol; -namespace MQTTnet.Client.ExtendedAuthenticationExchange +namespace MQTTnet.Client { public class MqttExtendedAuthenticationExchangeContext { diff --git a/Source/MQTTnet/Client/ExtendedAuthenticationExchange/MqttExtendedAuthenticationExchangeData.cs b/Source/MQTTnet/Client/ExtendedAuthenticationExchange/MqttExtendedAuthenticationExchangeData.cs index 29f38217..3a9a7f4f 100644 --- a/Source/MQTTnet/Client/ExtendedAuthenticationExchange/MqttExtendedAuthenticationExchangeData.cs +++ b/Source/MQTTnet/Client/ExtendedAuthenticationExchange/MqttExtendedAuthenticationExchangeData.cs @@ -2,7 +2,7 @@ using MQTTnet.Packets; using MQTTnet.Protocol; -namespace MQTTnet.Client.ExtendedAuthenticationExchange +namespace MQTTnet.Client { public class MqttExtendedAuthenticationExchangeData { diff --git a/Source/MQTTnet/Client/IMqttClient.cs b/Source/MQTTnet/Client/IMqttClient.cs index 11b515b9..d05d72ca 100644 --- a/Source/MQTTnet/Client/IMqttClient.cs +++ b/Source/MQTTnet/Client/IMqttClient.cs @@ -1,10 +1,4 @@ -using MQTTnet.Client.Connecting; -using MQTTnet.Client.Disconnecting; -using MQTTnet.Client.ExtendedAuthenticationExchange; -using MQTTnet.Client.Options; -using MQTTnet.Client.Subscribing; -using MQTTnet.Client.Unsubscribing; -using System; +using System; using System.Threading; using System.Threading.Tasks; diff --git a/Source/MQTTnet/Client/MqttClient.cs b/Source/MQTTnet/Client/MqttClient.cs index 2f66d100..670467c4 100644 --- a/Source/MQTTnet/Client/MqttClient.cs +++ b/Source/MQTTnet/Client/MqttClient.cs @@ -1,12 +1,4 @@ using MQTTnet.Adapter; -using MQTTnet.Client.Connecting; -using MQTTnet.Client.Disconnecting; -using MQTTnet.Client.ExtendedAuthenticationExchange; -using MQTTnet.Client.Options; -using MQTTnet.Client.Publishing; -using MQTTnet.Client.Receiving; -using MQTTnet.Client.Subscribing; -using MQTTnet.Client.Unsubscribing; using MQTTnet.Exceptions; using MQTTnet.Internal; using MQTTnet.PacketDispatcher; @@ -15,7 +7,7 @@ using MQTTnet.Protocol; using System; using System.Threading; using System.Threading.Tasks; -using MQTTnet.Diagnostics.Logger; +using MQTTnet.Diagnostics; using MQTTnet.Formatter; using MQTTnet.Implementations; @@ -33,6 +25,7 @@ namespace MQTTnet.Client readonly AsyncEvent _applicationMessageReceivedEvent = new AsyncEvent(); readonly IMqttClientAdapterFactory _adapterFactory; + readonly IMqttNetLogger _rootLogger; readonly MqttNetSourceLogger _logger; CancellationTokenSource _backgroundCancellationTokenSource; @@ -49,12 +42,11 @@ namespace MQTTnet.Client MqttClientDisconnectReason _disconnectReason; DateTime _lastPacketSentTimestamp; - + public MqttClient(IMqttClientAdapterFactory channelFactory, IMqttNetLogger logger) { - if (logger == null) throw new ArgumentNullException(nameof(logger)); - _adapterFactory = channelFactory ?? throw new ArgumentNullException(nameof(channelFactory)); + _rootLogger = logger ?? throw new ArgumentNullException(nameof(logger)); _logger = logger.WithSource(nameof(MqttClient)); } @@ -74,8 +66,6 @@ namespace MQTTnet.Client remove => _disconnectedEvent.RemoveHandler(value); } - public IMqttApplicationMessageReceivedHandler ApplicationMessageReceivedHandler { get; set; } - public event Func ApplicationMessageReceivedAsync { add => _applicationMessageReceivedEvent.AddHandler(value); @@ -112,7 +102,7 @@ namespace MQTTnet.Client _backgroundCancellationTokenSource = new CancellationTokenSource(); var backgroundCancellationToken = _backgroundCancellationTokenSource.Token; - var adapter = _adapterFactory.CreateClientAdapter(options); + var adapter = _adapterFactory.CreateClientAdapter(options, _rootLogger); _adapter = adapter; using (var effectiveCancellationToken = CancellationTokenSource.CreateLinkedTokenSource(backgroundCancellationToken, cancellationToken)) @@ -813,13 +803,7 @@ namespace MQTTnet.Client var applicationMessageFactory = new MqttApplicationMessageFactory(); var applicationMessage = applicationMessageFactory.Create(publishPacket); var eventArgs = new MqttApplicationMessageReceivedEventArgs(Options.ClientId, applicationMessage, publishPacket, AcknowledgeReceivedPublishPacket); - - var handler = ApplicationMessageReceivedHandler; - if (handler != null) - { - await handler.HandleApplicationMessageReceivedAsync(eventArgs).ConfigureAwait(false); - } - + await _applicationMessageReceivedEvent.InvokeAsync(eventArgs).ConfigureAwait(false); return eventArgs; diff --git a/Source/MQTTnet/Client/MqttClientExtensions.cs b/Source/MQTTnet/Client/MqttClientExtensions.cs index 89e92565..006c4fb2 100644 --- a/Source/MQTTnet/Client/MqttClientExtensions.cs +++ b/Source/MQTTnet/Client/MqttClientExtensions.cs @@ -1,16 +1,9 @@ -using MQTTnet.Client.Connecting; -using MQTTnet.Client.Disconnecting; -using MQTTnet.Client.ExtendedAuthenticationExchange; -using MQTTnet.Client.Options; -using MQTTnet.Client.Publishing; -using MQTTnet.Client.Receiving; -using MQTTnet.Client.Subscribing; -using MQTTnet.Client.Unsubscribing; using MQTTnet.Protocol; using System; using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; +using MQTTnet.Packets; namespace MQTTnet.Client { @@ -79,39 +72,7 @@ namespace MQTTnet.Client client.DisconnectedHandler = handler; return client; } - - public static IMqttClient UseApplicationMessageReceivedHandler(this IMqttClient client, Func handler) - { - if (client == null) throw new ArgumentNullException(nameof(client)); - - if (handler == null) - { - return client.UseApplicationMessageReceivedHandler((IMqttApplicationMessageReceivedHandler)null); - } - - return client.UseApplicationMessageReceivedHandler(new MqttApplicationMessageReceivedHandlerDelegate(handler)); - } - - public static IMqttClient UseApplicationMessageReceivedHandler(this IMqttClient client, Action handler) - { - if (client == null) throw new ArgumentNullException(nameof(client)); - - if (handler == null) - { - return client.UseApplicationMessageReceivedHandler((IMqttApplicationMessageReceivedHandler)null); - } - - return client.UseApplicationMessageReceivedHandler(new MqttApplicationMessageReceivedHandlerDelegate(handler)); - } - - public static IMqttClient UseApplicationMessageReceivedHandler(this IMqttClient client, IMqttApplicationMessageReceivedHandler handler) - { - if (client == null) throw new ArgumentNullException(nameof(client)); - - client.ApplicationMessageReceivedHandler = handler; - return client; - } - + public static Task ReconnectAsync(this IMqttClient client) { if (client == null) throw new ArgumentNullException(nameof(client)); diff --git a/Source/MQTTnet/Client/Options/IMqttClientChannelOptions.cs b/Source/MQTTnet/Client/Options/IMqttClientChannelOptions.cs index 729d12f0..22249632 100644 --- a/Source/MQTTnet/Client/Options/IMqttClientChannelOptions.cs +++ b/Source/MQTTnet/Client/Options/IMqttClientChannelOptions.cs @@ -1,4 +1,4 @@ -namespace MQTTnet.Client.Options +namespace MQTTnet.Client { public interface IMqttClientChannelOptions { diff --git a/Source/MQTTnet/Client/Options/IMqttClientCredentials.cs b/Source/MQTTnet/Client/Options/IMqttClientCredentials.cs index 1caa9f09..94836cc5 100644 --- a/Source/MQTTnet/Client/Options/IMqttClientCredentials.cs +++ b/Source/MQTTnet/Client/Options/IMqttClientCredentials.cs @@ -1,4 +1,4 @@ -namespace MQTTnet.Client.Options +namespace MQTTnet.Client { public interface IMqttClientCredentials { diff --git a/Source/MQTTnet/Client/Options/IMqttClientOptions.cs b/Source/MQTTnet/Client/Options/IMqttClientOptions.cs index 1ef462a1..5f1dd437 100644 --- a/Source/MQTTnet/Client/Options/IMqttClientOptions.cs +++ b/Source/MQTTnet/Client/Options/IMqttClientOptions.cs @@ -1,11 +1,10 @@ -using MQTTnet.Client.ExtendedAuthenticationExchange; +using System; +using System.Collections.Generic; +using MQTTnet.Diagnostics; using MQTTnet.Formatter; using MQTTnet.Packets; -using System; -using System.Collections.Generic; -using MQTTnet.Diagnostics.PacketInspection; -namespace MQTTnet.Client.Options +namespace MQTTnet.Client { public interface IMqttClientOptions { diff --git a/Source/MQTTnet/Client/Options/MqttClientCertificateValidationCallbackContext.cs b/Source/MQTTnet/Client/Options/MqttClientCertificateValidationCallbackContext.cs index 3827f05d..c8eb5dce 100644 --- a/Source/MQTTnet/Client/Options/MqttClientCertificateValidationCallbackContext.cs +++ b/Source/MQTTnet/Client/Options/MqttClientCertificateValidationCallbackContext.cs @@ -1,7 +1,7 @@ using System.Net.Security; using System.Security.Cryptography.X509Certificates; -namespace MQTTnet.Client.Options +namespace MQTTnet.Client { public class MqttClientCertificateValidationCallbackContext { diff --git a/Source/MQTTnet/Client/Options/MqttClientCredentials.cs b/Source/MQTTnet/Client/Options/MqttClientCredentials.cs index e0686391..1930062c 100644 --- a/Source/MQTTnet/Client/Options/MqttClientCredentials.cs +++ b/Source/MQTTnet/Client/Options/MqttClientCredentials.cs @@ -1,4 +1,4 @@ -namespace MQTTnet.Client.Options +namespace MQTTnet.Client { public class MqttClientCredentials : IMqttClientCredentials { diff --git a/Source/MQTTnet/Client/Options/MqttClientOptions.cs b/Source/MQTTnet/Client/Options/MqttClientOptions.cs index d67410a9..cff39899 100644 --- a/Source/MQTTnet/Client/Options/MqttClientOptions.cs +++ b/Source/MQTTnet/Client/Options/MqttClientOptions.cs @@ -1,11 +1,10 @@ -using MQTTnet.Client.ExtendedAuthenticationExchange; +using System; +using System.Collections.Generic; +using MQTTnet.Diagnostics; using MQTTnet.Formatter; using MQTTnet.Packets; -using System; -using System.Collections.Generic; -using MQTTnet.Diagnostics.PacketInspection; -namespace MQTTnet.Client.Options +namespace MQTTnet.Client { public class MqttClientOptions : IMqttClientOptions { diff --git a/Source/MQTTnet/Client/Options/MqttClientOptionsBuilder.cs b/Source/MQTTnet/Client/Options/MqttClientOptionsBuilder.cs index a8560b36..5977f274 100644 --- a/Source/MQTTnet/Client/Options/MqttClientOptionsBuilder.cs +++ b/Source/MQTTnet/Client/Options/MqttClientOptionsBuilder.cs @@ -1,13 +1,12 @@ -using MQTTnet.Client.ExtendedAuthenticationExchange; -using MQTTnet.Formatter; -using MQTTnet.Packets; -using System; +using System; using System.Collections.Generic; using System.Linq; using System.Text; -using MQTTnet.Diagnostics.PacketInspection; +using MQTTnet.Diagnostics; +using MQTTnet.Formatter; +using MQTTnet.Packets; -namespace MQTTnet.Client.Options +namespace MQTTnet.Client { public class MqttClientOptionsBuilder { diff --git a/Source/MQTTnet/Client/Options/MqttClientOptionsBuilderTlsParameters.cs b/Source/MQTTnet/Client/Options/MqttClientOptionsBuilderTlsParameters.cs index 27ad4352..4ede868a 100644 --- a/Source/MQTTnet/Client/Options/MqttClientOptionsBuilderTlsParameters.cs +++ b/Source/MQTTnet/Client/Options/MqttClientOptionsBuilderTlsParameters.cs @@ -4,7 +4,7 @@ using System.Net.Security; using System.Security.Authentication; using System.Security.Cryptography.X509Certificates; -namespace MQTTnet.Client.Options +namespace MQTTnet.Client { public class MqttClientOptionsBuilderTlsParameters { diff --git a/Source/MQTTnet/Client/Options/MqttClientOptionsBuilderWebSocketParameters.cs b/Source/MQTTnet/Client/Options/MqttClientOptionsBuilderWebSocketParameters.cs index f516e837..54e048bc 100644 --- a/Source/MQTTnet/Client/Options/MqttClientOptionsBuilderWebSocketParameters.cs +++ b/Source/MQTTnet/Client/Options/MqttClientOptionsBuilderWebSocketParameters.cs @@ -1,7 +1,7 @@ using System.Collections.Generic; using System.Net; -namespace MQTTnet.Client.Options +namespace MQTTnet.Client { public class MqttClientOptionsBuilderWebSocketParameters { diff --git a/Source/MQTTnet/Client/Options/MqttClientTcpOptions.cs b/Source/MQTTnet/Client/Options/MqttClientTcpOptions.cs index 797e9044..90b107dc 100644 --- a/Source/MQTTnet/Client/Options/MqttClientTcpOptions.cs +++ b/Source/MQTTnet/Client/Options/MqttClientTcpOptions.cs @@ -1,6 +1,6 @@ using System.Net.Sockets; -namespace MQTTnet.Client.Options +namespace MQTTnet.Client { public class MqttClientTcpOptions : IMqttClientChannelOptions { diff --git a/Source/MQTTnet/Client/Options/MqttClientTcpOptionsExtensions.cs b/Source/MQTTnet/Client/Options/MqttClientTcpOptionsExtensions.cs index 1b49a58d..460069a7 100644 --- a/Source/MQTTnet/Client/Options/MqttClientTcpOptionsExtensions.cs +++ b/Source/MQTTnet/Client/Options/MqttClientTcpOptionsExtensions.cs @@ -1,6 +1,6 @@ using System; -namespace MQTTnet.Client.Options +namespace MQTTnet.Client { public static class MqttClientTcpOptionsExtensions { diff --git a/Source/MQTTnet/Client/Options/MqttClientTlsOptions.cs b/Source/MQTTnet/Client/Options/MqttClientTlsOptions.cs index e2d57eed..753fda2b 100644 --- a/Source/MQTTnet/Client/Options/MqttClientTlsOptions.cs +++ b/Source/MQTTnet/Client/Options/MqttClientTlsOptions.cs @@ -4,7 +4,7 @@ using System.Net.Security; using System.Security.Authentication; using System.Security.Cryptography.X509Certificates; -namespace MQTTnet.Client.Options +namespace MQTTnet.Client { public class MqttClientTlsOptions { diff --git a/Source/MQTTnet/Client/Options/MqttClientWebSocketOptions.cs b/Source/MQTTnet/Client/Options/MqttClientWebSocketOptions.cs index d62f1f17..fe8f1d27 100644 --- a/Source/MQTTnet/Client/Options/MqttClientWebSocketOptions.cs +++ b/Source/MQTTnet/Client/Options/MqttClientWebSocketOptions.cs @@ -1,7 +1,7 @@ using System.Collections.Generic; using System.Net; -namespace MQTTnet.Client.Options +namespace MQTTnet.Client { public class MqttClientWebSocketOptions : IMqttClientChannelOptions { diff --git a/Source/MQTTnet/Client/Options/MqttClientWebSocketProxyOptions.cs b/Source/MQTTnet/Client/Options/MqttClientWebSocketProxyOptions.cs index 7ff40f84..13b13667 100644 --- a/Source/MQTTnet/Client/Options/MqttClientWebSocketProxyOptions.cs +++ b/Source/MQTTnet/Client/Options/MqttClientWebSocketProxyOptions.cs @@ -1,4 +1,4 @@ -namespace MQTTnet.Client.Options +namespace MQTTnet.Client { public class MqttClientWebSocketProxyOptions { diff --git a/Source/MQTTnet/Client/Publishing/MqttClientPublishReasonCode.cs b/Source/MQTTnet/Client/Publishing/MqttClientPublishReasonCode.cs index dddb8d07..629a2cd2 100644 --- a/Source/MQTTnet/Client/Publishing/MqttClientPublishReasonCode.cs +++ b/Source/MQTTnet/Client/Publishing/MqttClientPublishReasonCode.cs @@ -1,4 +1,4 @@ -namespace MQTTnet.Client.Publishing +namespace MQTTnet.Client { public enum MqttClientPublishReasonCode { diff --git a/Source/MQTTnet/Client/Publishing/MqttClientPublishResult.cs b/Source/MQTTnet/Client/Publishing/MqttClientPublishResult.cs index a523fe55..bcc5271d 100644 --- a/Source/MQTTnet/Client/Publishing/MqttClientPublishResult.cs +++ b/Source/MQTTnet/Client/Publishing/MqttClientPublishResult.cs @@ -1,7 +1,7 @@ using System.Collections.Generic; using MQTTnet.Packets; -namespace MQTTnet.Client.Publishing +namespace MQTTnet.Client { public sealed class MqttClientPublishResult { diff --git a/Source/MQTTnet/Client/Publishing/MqttClientPublishResultFactory.cs b/Source/MQTTnet/Client/Publishing/MqttClientPublishResultFactory.cs index f97e3fe4..aa14f574 100644 --- a/Source/MQTTnet/Client/Publishing/MqttClientPublishResultFactory.cs +++ b/Source/MQTTnet/Client/Publishing/MqttClientPublishResultFactory.cs @@ -1,7 +1,7 @@ using MQTTnet.Packets; using MQTTnet.Protocol; -namespace MQTTnet.Client.Publishing +namespace MQTTnet.Client { public sealed class MqttClientPublishResultFactory { diff --git a/Source/MQTTnet/Client/Receiving/IMqttApplicationMessageReceivedHandler.cs b/Source/MQTTnet/Client/Receiving/IMqttApplicationMessageReceivedHandler.cs deleted file mode 100644 index 3ea73175..00000000 --- a/Source/MQTTnet/Client/Receiving/IMqttApplicationMessageReceivedHandler.cs +++ /dev/null @@ -1,9 +0,0 @@ -using System.Threading.Tasks; - -namespace MQTTnet.Client.Receiving -{ - public interface IMqttApplicationMessageReceivedHandler - { - Task HandleApplicationMessageReceivedAsync(MqttApplicationMessageReceivedEventArgs eventArgs); - } -} diff --git a/Source/MQTTnet/MqttApplicationMessageReceivedEventArgs.cs b/Source/MQTTnet/Client/Receiving/MqttApplicationMessageReceivedEventArgs.cs similarity index 99% rename from Source/MQTTnet/MqttApplicationMessageReceivedEventArgs.cs rename to Source/MQTTnet/Client/Receiving/MqttApplicationMessageReceivedEventArgs.cs index 719630e3..58f4a46d 100644 --- a/Source/MQTTnet/MqttApplicationMessageReceivedEventArgs.cs +++ b/Source/MQTTnet/Client/Receiving/MqttApplicationMessageReceivedEventArgs.cs @@ -4,7 +4,7 @@ using System.Threading; using System.Threading.Tasks; using MQTTnet.Packets; -namespace MQTTnet +namespace MQTTnet.Client { public sealed class MqttApplicationMessageReceivedEventArgs : EventArgs { diff --git a/Source/MQTTnet/Client/Receiving/MqttApplicationMessageReceivedHandlerDelegate.cs b/Source/MQTTnet/Client/Receiving/MqttApplicationMessageReceivedHandlerDelegate.cs deleted file mode 100644 index dd25bb5c..00000000 --- a/Source/MQTTnet/Client/Receiving/MqttApplicationMessageReceivedHandlerDelegate.cs +++ /dev/null @@ -1,32 +0,0 @@ -using System; -using System.Threading.Tasks; -using MQTTnet.Implementations; - -namespace MQTTnet.Client.Receiving -{ - public sealed class MqttApplicationMessageReceivedHandlerDelegate : IMqttApplicationMessageReceivedHandler - { - readonly Func _handler; - - public MqttApplicationMessageReceivedHandlerDelegate(Action handler) - { - if (handler == null) throw new ArgumentNullException(nameof(handler)); - - _handler = context => - { - handler(context); - return PlatformAbstractionLayer.CompletedTask; - }; - } - - public MqttApplicationMessageReceivedHandlerDelegate(Func handler) - { - _handler = handler ?? throw new ArgumentNullException(nameof(handler)); - } - - public Task HandleApplicationMessageReceivedAsync(MqttApplicationMessageReceivedEventArgs context) - { - return _handler(context); - } - } -} diff --git a/Source/MQTTnet/MqttApplicationMessageReceivedReasonCode.cs b/Source/MQTTnet/Client/Receiving/MqttApplicationMessageReceivedReasonCode.cs similarity index 93% rename from Source/MQTTnet/MqttApplicationMessageReceivedReasonCode.cs rename to Source/MQTTnet/Client/Receiving/MqttApplicationMessageReceivedReasonCode.cs index 3cd6e69d..ad46bfa4 100644 --- a/Source/MQTTnet/MqttApplicationMessageReceivedReasonCode.cs +++ b/Source/MQTTnet/Client/Receiving/MqttApplicationMessageReceivedReasonCode.cs @@ -1,4 +1,4 @@ -namespace MQTTnet +namespace MQTTnet.Client { public enum MqttApplicationMessageReceivedReasonCode { diff --git a/Source/MQTTnet/Client/Subscribing/MqttClientSubscribeOptions.cs b/Source/MQTTnet/Client/Subscribing/MqttClientSubscribeOptions.cs index c6337a21..d38029d6 100644 --- a/Source/MQTTnet/Client/Subscribing/MqttClientSubscribeOptions.cs +++ b/Source/MQTTnet/Client/Subscribing/MqttClientSubscribeOptions.cs @@ -1,7 +1,7 @@ using System.Collections.Generic; using MQTTnet.Packets; -namespace MQTTnet.Client.Subscribing +namespace MQTTnet.Client { public sealed class MqttClientSubscribeOptions { diff --git a/Source/MQTTnet/Client/Subscribing/MqttClientSubscribeOptionsBuilder.cs b/Source/MQTTnet/Client/Subscribing/MqttClientSubscribeOptionsBuilder.cs index 96a66433..8b7415a6 100644 --- a/Source/MQTTnet/Client/Subscribing/MqttClientSubscribeOptionsBuilder.cs +++ b/Source/MQTTnet/Client/Subscribing/MqttClientSubscribeOptionsBuilder.cs @@ -1,10 +1,10 @@ -using MQTTnet.Packets; -using MQTTnet.Protocol; -using System; +using System; using System.Collections.Generic; using MQTTnet.Exceptions; +using MQTTnet.Packets; +using MQTTnet.Protocol; -namespace MQTTnet.Client.Subscribing +namespace MQTTnet.Client { public sealed class MqttClientSubscribeOptionsBuilder { diff --git a/Source/MQTTnet/Client/Subscribing/MqttClientSubscribeResult.cs b/Source/MQTTnet/Client/Subscribing/MqttClientSubscribeResult.cs index b6141f39..b0bac0e6 100644 --- a/Source/MQTTnet/Client/Subscribing/MqttClientSubscribeResult.cs +++ b/Source/MQTTnet/Client/Subscribing/MqttClientSubscribeResult.cs @@ -1,7 +1,7 @@ using System.Collections.Generic; using MQTTnet.Packets; -namespace MQTTnet.Client.Subscribing +namespace MQTTnet.Client { public sealed class MqttClientSubscribeResult { diff --git a/Source/MQTTnet/Client/Subscribing/MqttClientSubscribeResultCode.cs b/Source/MQTTnet/Client/Subscribing/MqttClientSubscribeResultCode.cs index f1644b4e..70e4b154 100644 --- a/Source/MQTTnet/Client/Subscribing/MqttClientSubscribeResultCode.cs +++ b/Source/MQTTnet/Client/Subscribing/MqttClientSubscribeResultCode.cs @@ -1,4 +1,4 @@ -namespace MQTTnet.Client.Subscribing +namespace MQTTnet.Client { public enum MqttClientSubscribeResultCode { diff --git a/Source/MQTTnet/Client/Subscribing/MqttClientSubscribeResultFactory.cs b/Source/MQTTnet/Client/Subscribing/MqttClientSubscribeResultFactory.cs index 374e4d0a..71ce535e 100644 --- a/Source/MQTTnet/Client/Subscribing/MqttClientSubscribeResultFactory.cs +++ b/Source/MQTTnet/Client/Subscribing/MqttClientSubscribeResultFactory.cs @@ -3,7 +3,7 @@ using System.Linq; using MQTTnet.Exceptions; using MQTTnet.Packets; -namespace MQTTnet.Client.Subscribing +namespace MQTTnet.Client { public sealed class MqttClientSubscribeResultFactory { diff --git a/Source/MQTTnet/Client/Subscribing/MqttClientSubscribeResultItem.cs b/Source/MQTTnet/Client/Subscribing/MqttClientSubscribeResultItem.cs index 277bfe4c..6858fdd6 100644 --- a/Source/MQTTnet/Client/Subscribing/MqttClientSubscribeResultItem.cs +++ b/Source/MQTTnet/Client/Subscribing/MqttClientSubscribeResultItem.cs @@ -1,4 +1,6 @@ -namespace MQTTnet.Client.Subscribing +using MQTTnet.Packets; + +namespace MQTTnet.Client { public sealed class MqttClientSubscribeResultItem { diff --git a/Source/MQTTnet/Client/Unsubscribing/MqttClientUnsubscribeOptions.cs b/Source/MQTTnet/Client/Unsubscribing/MqttClientUnsubscribeOptions.cs index bf713701..fa447fc0 100644 --- a/Source/MQTTnet/Client/Unsubscribing/MqttClientUnsubscribeOptions.cs +++ b/Source/MQTTnet/Client/Unsubscribing/MqttClientUnsubscribeOptions.cs @@ -1,7 +1,7 @@ using System.Collections.Generic; using MQTTnet.Packets; -namespace MQTTnet.Client.Unsubscribing +namespace MQTTnet.Client { public sealed class MqttClientUnsubscribeOptions { diff --git a/Source/MQTTnet/Client/Unsubscribing/MqttClientUnsubscribeOptionsBuilder.cs b/Source/MQTTnet/Client/Unsubscribing/MqttClientUnsubscribeOptionsBuilder.cs index a7f022e1..38827e90 100644 --- a/Source/MQTTnet/Client/Unsubscribing/MqttClientUnsubscribeOptionsBuilder.cs +++ b/Source/MQTTnet/Client/Unsubscribing/MqttClientUnsubscribeOptionsBuilder.cs @@ -1,8 +1,8 @@ -using MQTTnet.Packets; -using System; +using System; using System.Collections.Generic; +using MQTTnet.Packets; -namespace MQTTnet.Client.Unsubscribing +namespace MQTTnet.Client { public class MqttClientUnsubscribeOptionsBuilder { diff --git a/Source/MQTTnet/Client/Unsubscribing/MqttClientUnsubscribeResult.cs b/Source/MQTTnet/Client/Unsubscribing/MqttClientUnsubscribeResult.cs index d4ce4f6f..47ec3e27 100644 --- a/Source/MQTTnet/Client/Unsubscribing/MqttClientUnsubscribeResult.cs +++ b/Source/MQTTnet/Client/Unsubscribing/MqttClientUnsubscribeResult.cs @@ -1,7 +1,7 @@ using System.Collections.Generic; using MQTTnet.Packets; -namespace MQTTnet.Client.Unsubscribing +namespace MQTTnet.Client { public sealed class MqttClientUnsubscribeResult { diff --git a/Source/MQTTnet/Client/Unsubscribing/MqttClientUnsubscribeResultCode.cs b/Source/MQTTnet/Client/Unsubscribing/MqttClientUnsubscribeResultCode.cs index 269abc10..e1f76c0f 100644 --- a/Source/MQTTnet/Client/Unsubscribing/MqttClientUnsubscribeResultCode.cs +++ b/Source/MQTTnet/Client/Unsubscribing/MqttClientUnsubscribeResultCode.cs @@ -1,4 +1,4 @@ -namespace MQTTnet.Client.Unsubscribing +namespace MQTTnet.Client { public enum MqttClientUnsubscribeResultCode { diff --git a/Source/MQTTnet/Client/Unsubscribing/MqttClientUnsubscribeResultFactory.cs b/Source/MQTTnet/Client/Unsubscribing/MqttClientUnsubscribeResultFactory.cs index a030bbdf..c56d35a6 100644 --- a/Source/MQTTnet/Client/Unsubscribing/MqttClientUnsubscribeResultFactory.cs +++ b/Source/MQTTnet/Client/Unsubscribing/MqttClientUnsubscribeResultFactory.cs @@ -3,7 +3,7 @@ using System.Linq; using MQTTnet.Exceptions; using MQTTnet.Packets; -namespace MQTTnet.Client.Unsubscribing +namespace MQTTnet.Client { public sealed class MqttClientUnsubscribeResultFactory { diff --git a/Source/MQTTnet/Client/Unsubscribing/MqttClientUnsubscribeResultItem.cs b/Source/MQTTnet/Client/Unsubscribing/MqttClientUnsubscribeResultItem.cs index 1cef26e0..67ef928a 100644 --- a/Source/MQTTnet/Client/Unsubscribing/MqttClientUnsubscribeResultItem.cs +++ b/Source/MQTTnet/Client/Unsubscribing/MqttClientUnsubscribeResultItem.cs @@ -1,6 +1,6 @@ using System; -namespace MQTTnet.Client.Unsubscribing +namespace MQTTnet.Client { public sealed class MqttClientUnsubscribeResultItem { diff --git a/Source/MQTTnet/Diagnostics/Logger/IMqttNetLogger.cs b/Source/MQTTnet/Diagnostics/Logger/IMqttNetLogger.cs index c96ee640..e77d0d11 100644 --- a/Source/MQTTnet/Diagnostics/Logger/IMqttNetLogger.cs +++ b/Source/MQTTnet/Diagnostics/Logger/IMqttNetLogger.cs @@ -1,6 +1,6 @@ using System; -namespace MQTTnet.Diagnostics.Logger +namespace MQTTnet.Diagnostics { public interface IMqttNetLogger { diff --git a/Source/MQTTnet/Diagnostics/Logger/MqttNetEventLogger.cs b/Source/MQTTnet/Diagnostics/Logger/MqttNetEventLogger.cs index bbf914a3..6e00fa38 100644 --- a/Source/MQTTnet/Diagnostics/Logger/MqttNetEventLogger.cs +++ b/Source/MQTTnet/Diagnostics/Logger/MqttNetEventLogger.cs @@ -1,6 +1,6 @@ using System; -namespace MQTTnet.Diagnostics.Logger +namespace MQTTnet.Diagnostics { /// /// This logger fires an event when a new message was published. diff --git a/Source/MQTTnet/Diagnostics/Logger/MqttNetLogLevel.cs b/Source/MQTTnet/Diagnostics/Logger/MqttNetLogLevel.cs index f4b07b73..cdc7a78a 100644 --- a/Source/MQTTnet/Diagnostics/Logger/MqttNetLogLevel.cs +++ b/Source/MQTTnet/Diagnostics/Logger/MqttNetLogLevel.cs @@ -1,4 +1,4 @@ -namespace MQTTnet.Diagnostics.Logger +namespace MQTTnet.Diagnostics { public enum MqttNetLogLevel { diff --git a/Source/MQTTnet/Diagnostics/Logger/MqttNetLogMessage.cs b/Source/MQTTnet/Diagnostics/Logger/MqttNetLogMessage.cs index 8d3b06cb..285dc00e 100644 --- a/Source/MQTTnet/Diagnostics/Logger/MqttNetLogMessage.cs +++ b/Source/MQTTnet/Diagnostics/Logger/MqttNetLogMessage.cs @@ -1,6 +1,6 @@ using System; -namespace MQTTnet.Diagnostics.Logger +namespace MQTTnet.Diagnostics { public sealed class MqttNetLogMessage { diff --git a/Source/MQTTnet/Diagnostics/Logger/MqttNetLogMessagePublishedEventArgs.cs b/Source/MQTTnet/Diagnostics/Logger/MqttNetLogMessagePublishedEventArgs.cs index 581921dd..6683b6df 100644 --- a/Source/MQTTnet/Diagnostics/Logger/MqttNetLogMessagePublishedEventArgs.cs +++ b/Source/MQTTnet/Diagnostics/Logger/MqttNetLogMessagePublishedEventArgs.cs @@ -1,6 +1,6 @@ using System; -namespace MQTTnet.Diagnostics.Logger +namespace MQTTnet.Diagnostics { public sealed class MqttNetLogMessagePublishedEventArgs : EventArgs { diff --git a/Source/MQTTnet/Diagnostics/Logger/MqttNetNullLogger.cs b/Source/MQTTnet/Diagnostics/Logger/MqttNetNullLogger.cs index 806fd346..6e8b9798 100644 --- a/Source/MQTTnet/Diagnostics/Logger/MqttNetNullLogger.cs +++ b/Source/MQTTnet/Diagnostics/Logger/MqttNetNullLogger.cs @@ -1,6 +1,6 @@ using System; -namespace MQTTnet.Diagnostics.Logger +namespace MQTTnet.Diagnostics { /// /// This logger does nothing with the messages. diff --git a/Source/MQTTnet/Diagnostics/Logger/MqttNetSourceLogger.cs b/Source/MQTTnet/Diagnostics/Logger/MqttNetSourceLogger.cs index 4b76ddf0..546dad6c 100644 --- a/Source/MQTTnet/Diagnostics/Logger/MqttNetSourceLogger.cs +++ b/Source/MQTTnet/Diagnostics/Logger/MqttNetSourceLogger.cs @@ -1,6 +1,6 @@ using System; -namespace MQTTnet.Diagnostics.Logger +namespace MQTTnet.Diagnostics { public sealed class MqttNetSourceLogger { diff --git a/Source/MQTTnet/Diagnostics/Logger/MqttNetSourceLoggerExtensions.cs b/Source/MQTTnet/Diagnostics/Logger/MqttNetSourceLoggerExtensions.cs index e92c860d..a09cdc6d 100644 --- a/Source/MQTTnet/Diagnostics/Logger/MqttNetSourceLoggerExtensions.cs +++ b/Source/MQTTnet/Diagnostics/Logger/MqttNetSourceLoggerExtensions.cs @@ -1,6 +1,6 @@ using System; -namespace MQTTnet.Diagnostics.Logger +namespace MQTTnet.Diagnostics { public static class MqttNetSourceLoggerExtensions { diff --git a/Source/MQTTnet/Diagnostics/PacketInspection/IMqttPacketInspector.cs b/Source/MQTTnet/Diagnostics/PacketInspection/IMqttPacketInspector.cs index 9d7db80c..76461e04 100644 --- a/Source/MQTTnet/Diagnostics/PacketInspection/IMqttPacketInspector.cs +++ b/Source/MQTTnet/Diagnostics/PacketInspection/IMqttPacketInspector.cs @@ -1,4 +1,4 @@ -namespace MQTTnet.Diagnostics.PacketInspection +namespace MQTTnet.Diagnostics { public interface IMqttPacketInspector { diff --git a/Source/MQTTnet/Diagnostics/PacketInspection/MqttPacketFlowDirection.cs b/Source/MQTTnet/Diagnostics/PacketInspection/MqttPacketFlowDirection.cs index 7f391179..13a34044 100644 --- a/Source/MQTTnet/Diagnostics/PacketInspection/MqttPacketFlowDirection.cs +++ b/Source/MQTTnet/Diagnostics/PacketInspection/MqttPacketFlowDirection.cs @@ -1,4 +1,4 @@ -namespace MQTTnet.Diagnostics.PacketInspection +namespace MQTTnet.Diagnostics { public enum MqttPacketFlowDirection { diff --git a/Source/MQTTnet/Diagnostics/PacketInspection/ProcessMqttPacketContext.cs b/Source/MQTTnet/Diagnostics/PacketInspection/ProcessMqttPacketContext.cs index 644b2a77..af79808f 100644 --- a/Source/MQTTnet/Diagnostics/PacketInspection/ProcessMqttPacketContext.cs +++ b/Source/MQTTnet/Diagnostics/PacketInspection/ProcessMqttPacketContext.cs @@ -1,4 +1,4 @@ -namespace MQTTnet.Diagnostics.PacketInspection +namespace MQTTnet.Diagnostics { public sealed class ProcessMqttPacketContext { diff --git a/Source/MQTTnet/Diagnostics/Runtime/TargetFrameworkProvider.cs b/Source/MQTTnet/Diagnostics/Runtime/TargetFrameworkProvider.cs index abe86311..a5e181dd 100644 --- a/Source/MQTTnet/Diagnostics/Runtime/TargetFrameworkProvider.cs +++ b/Source/MQTTnet/Diagnostics/Runtime/TargetFrameworkProvider.cs @@ -1,4 +1,4 @@ -namespace MQTTnet.Diagnostics.Runtime +namespace MQTTnet.Diagnostics { public static class TargetFrameworkProvider { diff --git a/Source/MQTTnet/Extensions/MqttClientOptionsBuilderExtension.cs b/Source/MQTTnet/Extensions/MqttClientOptionsBuilderExtension.cs index fc9da230..c69d9eca 100644 --- a/Source/MQTTnet/Extensions/MqttClientOptionsBuilderExtension.cs +++ b/Source/MQTTnet/Extensions/MqttClientOptionsBuilderExtension.cs @@ -1,6 +1,6 @@ using System; using System.Linq; -using MQTTnet.Client.Options; +using MQTTnet.Client; namespace MQTTnet.Extensions { diff --git a/Source/MQTTnet/Formatter/MqttConnectPacketFactory.cs b/Source/MQTTnet/Formatter/MqttConnectPacketFactory.cs index 9e6d2bb9..e450689b 100644 --- a/Source/MQTTnet/Formatter/MqttConnectPacketFactory.cs +++ b/Source/MQTTnet/Formatter/MqttConnectPacketFactory.cs @@ -1,5 +1,5 @@ using System; -using MQTTnet.Client.Options; +using MQTTnet.Client; using MQTTnet.Packets; namespace MQTTnet.Formatter diff --git a/Source/MQTTnet/Formatter/MqttDisconnectPacketFactory.cs b/Source/MQTTnet/Formatter/MqttDisconnectPacketFactory.cs index f7d00d6c..82f36f1c 100644 --- a/Source/MQTTnet/Formatter/MqttDisconnectPacketFactory.cs +++ b/Source/MQTTnet/Formatter/MqttDisconnectPacketFactory.cs @@ -1,4 +1,4 @@ -using MQTTnet.Client.Disconnecting; +using MQTTnet.Client; using MQTTnet.Packets; using MQTTnet.Protocol; diff --git a/Source/MQTTnet/Formatter/MqttPubAckPacketFactory.cs b/Source/MQTTnet/Formatter/MqttPubAckPacketFactory.cs index eb7ddc55..0ad95631 100644 --- a/Source/MQTTnet/Formatter/MqttPubAckPacketFactory.cs +++ b/Source/MQTTnet/Formatter/MqttPubAckPacketFactory.cs @@ -1,4 +1,5 @@ using System; +using MQTTnet.Client; using MQTTnet.Packets; using MQTTnet.Protocol; using MQTTnet.Server; diff --git a/Source/MQTTnet/Formatter/MqttPubCompPacketFactory.cs b/Source/MQTTnet/Formatter/MqttPubCompPacketFactory.cs index 03145e71..4fabf1b3 100644 --- a/Source/MQTTnet/Formatter/MqttPubCompPacketFactory.cs +++ b/Source/MQTTnet/Formatter/MqttPubCompPacketFactory.cs @@ -1,4 +1,5 @@ using System; +using MQTTnet.Client; using MQTTnet.Packets; using MQTTnet.Protocol; diff --git a/Source/MQTTnet/Formatter/MqttPubRecPacketFactory.cs b/Source/MQTTnet/Formatter/MqttPubRecPacketFactory.cs index b6cfc3aa..4f0c5f5c 100644 --- a/Source/MQTTnet/Formatter/MqttPubRecPacketFactory.cs +++ b/Source/MQTTnet/Formatter/MqttPubRecPacketFactory.cs @@ -1,4 +1,5 @@ using System; +using MQTTnet.Client; using MQTTnet.Packets; using MQTTnet.Protocol; using MQTTnet.Server; diff --git a/Source/MQTTnet/Formatter/MqttPubRelPacketFactory.cs b/Source/MQTTnet/Formatter/MqttPubRelPacketFactory.cs index 08c4ca51..ffcbd7c3 100644 --- a/Source/MQTTnet/Formatter/MqttPubRelPacketFactory.cs +++ b/Source/MQTTnet/Formatter/MqttPubRelPacketFactory.cs @@ -1,4 +1,5 @@ using System; +using MQTTnet.Client; using MQTTnet.Packets; using MQTTnet.Protocol; diff --git a/Source/MQTTnet/Formatter/MqttPublishPacketFactory.cs b/Source/MQTTnet/Formatter/MqttPublishPacketFactory.cs index 9d03e38e..984a1141 100644 --- a/Source/MQTTnet/Formatter/MqttPublishPacketFactory.cs +++ b/Source/MQTTnet/Formatter/MqttPublishPacketFactory.cs @@ -58,7 +58,6 @@ namespace MQTTnet.Formatter Payload = connectPacket.WillMessage, QualityOfServiceLevel = connectPacket.WillQoS, Retain = connectPacket.WillRetain, - Dup = false, Properties = { ContentType = connectPacket.WillProperties.ContentType, diff --git a/Source/MQTTnet/Formatter/MqttSubAckPacketFactory.cs b/Source/MQTTnet/Formatter/MqttSubAckPacketFactory.cs index 856ef028..ae9a0c4f 100644 --- a/Source/MQTTnet/Formatter/MqttSubAckPacketFactory.cs +++ b/Source/MQTTnet/Formatter/MqttSubAckPacketFactory.cs @@ -1,6 +1,6 @@ using System; using MQTTnet.Packets; -using MQTTnet.Server.Internal; +using MQTTnet.Server; namespace MQTTnet.Formatter { diff --git a/Source/MQTTnet/Formatter/MqttSubscribePacketFactory.cs b/Source/MQTTnet/Formatter/MqttSubscribePacketFactory.cs index 6d4710cc..2f8ca284 100644 --- a/Source/MQTTnet/Formatter/MqttSubscribePacketFactory.cs +++ b/Source/MQTTnet/Formatter/MqttSubscribePacketFactory.cs @@ -1,5 +1,5 @@ using System; -using MQTTnet.Client.Subscribing; +using MQTTnet.Client; using MQTTnet.Packets; namespace MQTTnet.Formatter diff --git a/Source/MQTTnet/Formatter/MqttUnsubAckPacketFactory.cs b/Source/MQTTnet/Formatter/MqttUnsubAckPacketFactory.cs index 9574facb..4bc02b7b 100644 --- a/Source/MQTTnet/Formatter/MqttUnsubAckPacketFactory.cs +++ b/Source/MQTTnet/Formatter/MqttUnsubAckPacketFactory.cs @@ -1,6 +1,6 @@ using System; using MQTTnet.Packets; -using MQTTnet.Server.Internal; +using MQTTnet.Server; namespace MQTTnet.Formatter { diff --git a/Source/MQTTnet/Formatter/MqttUnsubscribePacketFactory.cs b/Source/MQTTnet/Formatter/MqttUnsubscribePacketFactory.cs index ade26897..29b81fb0 100644 --- a/Source/MQTTnet/Formatter/MqttUnsubscribePacketFactory.cs +++ b/Source/MQTTnet/Formatter/MqttUnsubscribePacketFactory.cs @@ -1,5 +1,5 @@ using System; -using MQTTnet.Client.Unsubscribing; +using MQTTnet.Client; using MQTTnet.Packets; namespace MQTTnet.Formatter diff --git a/Source/MQTTnet/IMqttApplicationMessagePublisher.cs b/Source/MQTTnet/IMqttApplicationMessagePublisher.cs index ed43fbbe..3a59f5a6 100644 --- a/Source/MQTTnet/IMqttApplicationMessagePublisher.cs +++ b/Source/MQTTnet/IMqttApplicationMessagePublisher.cs @@ -1,6 +1,6 @@ using System.Threading; using System.Threading.Tasks; -using MQTTnet.Client.Publishing; +using MQTTnet.Client; namespace MQTTnet { diff --git a/Source/MQTTnet/IMqttApplicationMessageReceiver.cs b/Source/MQTTnet/IMqttApplicationMessageReceiver.cs index 0a674b5a..3f3eef92 100644 --- a/Source/MQTTnet/IMqttApplicationMessageReceiver.cs +++ b/Source/MQTTnet/IMqttApplicationMessageReceiver.cs @@ -1,17 +1,11 @@ using System; using System.Threading.Tasks; -using MQTTnet.Client.Receiving; +using MQTTnet.Client; namespace MQTTnet { public interface IMqttApplicationMessageReceiver { - /// - /// Gets or sets the application message received handler that is fired every time a new message is received on the client's subscriptions. - /// Hint: Initialize handlers before you connect the client to avoid issues. - /// - IMqttApplicationMessageReceivedHandler ApplicationMessageReceivedHandler { get; set; } - /// /// Fired when an application message was received. /// diff --git a/Source/MQTTnet/Implementations/MqttClientAdapterFactory.cs b/Source/MQTTnet/Implementations/MqttClientAdapterFactory.cs index 3d3d8ed2..3defaaba 100644 --- a/Source/MQTTnet/Implementations/MqttClientAdapterFactory.cs +++ b/Source/MQTTnet/Implementations/MqttClientAdapterFactory.cs @@ -1,23 +1,15 @@ using MQTTnet.Adapter; -using MQTTnet.Client.Options; using MQTTnet.Diagnostics; using MQTTnet.Formatter; using System; using MQTTnet.Channel; -using MQTTnet.Diagnostics.Logger; +using MQTTnet.Client; namespace MQTTnet.Implementations { - public class MqttClientAdapterFactory : IMqttClientAdapterFactory + public sealed class MqttClientAdapterFactory : IMqttClientAdapterFactory { - readonly IMqttNetLogger _logger; - - public MqttClientAdapterFactory(IMqttNetLogger logger) - { - _logger = logger ?? throw new ArgumentNullException(nameof(logger)); - } - - public IMqttChannelAdapter CreateClientAdapter(IMqttClientOptions options) + public IMqttChannelAdapter CreateClientAdapter(IMqttClientOptions options, IMqttNetLogger logger) { if (options == null) throw new ArgumentNullException(nameof(options)); @@ -43,7 +35,7 @@ namespace MQTTnet.Implementations } var packetFormatterAdapter = new MqttPacketFormatterAdapter(options.ProtocolVersion, new MqttPacketWriter()); - return new MqttChannelAdapter(channel, packetFormatterAdapter, options.PacketInspector, _logger); + return new MqttChannelAdapter(channel, packetFormatterAdapter, options.PacketInspector, logger); } } } diff --git a/Source/MQTTnet/Implementations/MqttTcpChannel.cs b/Source/MQTTnet/Implementations/MqttTcpChannel.cs index 4cb58ec8..11dabe6e 100644 --- a/Source/MQTTnet/Implementations/MqttTcpChannel.cs +++ b/Source/MQTTnet/Implementations/MqttTcpChannel.cs @@ -1,6 +1,5 @@ #if !WINDOWS_UWP using MQTTnet.Channel; -using MQTTnet.Client.Options; using System; using System.IO; using System.Linq; @@ -10,6 +9,7 @@ using System.Runtime.ExceptionServices; using System.Security.Cryptography.X509Certificates; using System.Threading; using System.Threading.Tasks; +using MQTTnet.Client; using MQTTnet.Exceptions; namespace MQTTnet.Implementations diff --git a/Source/MQTTnet/Implementations/MqttTcpServerAdapter.cs b/Source/MQTTnet/Implementations/MqttTcpServerAdapter.cs index 02fa19c1..7edda2fb 100644 --- a/Source/MQTTnet/Implementations/MqttTcpServerAdapter.cs +++ b/Source/MQTTnet/Implementations/MqttTcpServerAdapter.cs @@ -9,29 +9,20 @@ using System.Net.Sockets; using System.Security.Cryptography.X509Certificates; using System.Threading; using System.Threading.Tasks; -using MQTTnet.Diagnostics.Logger; namespace MQTTnet.Implementations { public sealed class MqttTcpServerAdapter : IMqttServerAdapter { readonly List _listeners = new List(); - readonly MqttNetSourceLogger _logger; - readonly IMqttNetLogger _rootLogger; CancellationTokenSource _cancellationTokenSource; - - public MqttTcpServerAdapter(IMqttNetLogger logger) - { - _rootLogger = logger ?? throw new ArgumentNullException(nameof(logger)); - _logger = logger.WithSource(nameof(MqttTcpServerAdapter)); - } - + public Func ClientHandler { get; set; } public bool TreatSocketOpeningErrorAsWarning { get; set; } - public Task StartAsync(MqttServerOptions options) + public Task StartAsync(MqttServerOptions options, IMqttNetLogger logger) { if (_cancellationTokenSource != null) throw new InvalidOperationException("Server is already started."); @@ -39,7 +30,7 @@ namespace MQTTnet.Implementations if (options.DefaultEndpointOptions.IsEnabled) { - RegisterListeners(options.DefaultEndpointOptions, null, _cancellationTokenSource.Token); + RegisterListeners(options.DefaultEndpointOptions, null, logger, _cancellationTokenSource.Token); } if (options.TlsEndpointOptions?.IsEnabled == true) @@ -55,7 +46,7 @@ namespace MQTTnet.Implementations throw new InvalidOperationException("The certificate for TLS encryption must contain the private key."); } - RegisterListeners(options.TlsEndpointOptions, tlsCertificate, _cancellationTokenSource.Token); + RegisterListeners(options.TlsEndpointOptions, tlsCertificate, logger, _cancellationTokenSource.Token); } return PlatformAbstractionLayer.CompletedTask; @@ -92,11 +83,11 @@ namespace MQTTnet.Implementations } } - void RegisterListeners(MqttServerTcpEndpointBaseOptions options, X509Certificate2 tlsCertificate, CancellationToken cancellationToken) + void RegisterListeners(MqttServerTcpEndpointBaseOptions options, X509Certificate2 tlsCertificate, IMqttNetLogger logger, CancellationToken cancellationToken) { if (!options.BoundInterNetworkAddress.Equals(IPAddress.None)) { - var listenerV4 = new MqttTcpServerListener(AddressFamily.InterNetwork, options, tlsCertificate, _rootLogger) + var listenerV4 = new MqttTcpServerListener(AddressFamily.InterNetwork, options, tlsCertificate, logger) { ClientHandler = OnClientAcceptedAsync }; @@ -109,7 +100,7 @@ namespace MQTTnet.Implementations if (!options.BoundInterNetworkV6Address.Equals(IPAddress.None)) { - var listenerV6 = new MqttTcpServerListener(AddressFamily.InterNetworkV6, options, tlsCertificate, _rootLogger) + var listenerV6 = new MqttTcpServerListener(AddressFamily.InterNetworkV6, options, tlsCertificate, logger) { ClientHandler = OnClientAcceptedAsync }; diff --git a/Source/MQTTnet/Implementations/MqttTcpServerListener.cs b/Source/MQTTnet/Implementations/MqttTcpServerListener.cs index 8d5ac31d..223da5b5 100644 --- a/Source/MQTTnet/Implementations/MqttTcpServerListener.cs +++ b/Source/MQTTnet/Implementations/MqttTcpServerListener.cs @@ -12,7 +12,6 @@ using System.Net.Sockets; using System.Security.Cryptography.X509Certificates; using System.Threading; using System.Threading.Tasks; -using MQTTnet.Diagnostics.Logger; namespace MQTTnet.Implementations { diff --git a/Source/MQTTnet/Implementations/MqttWebSocketChannel.cs b/Source/MQTTnet/Implementations/MqttWebSocketChannel.cs index 8d6915f4..5f2fcf4a 100644 --- a/Source/MQTTnet/Implementations/MqttWebSocketChannel.cs +++ b/Source/MQTTnet/Implementations/MqttWebSocketChannel.cs @@ -1,5 +1,4 @@ using MQTTnet.Channel; -using MQTTnet.Client.Options; using MQTTnet.Internal; using System; using System.Net; @@ -7,6 +6,7 @@ using System.Net.WebSockets; using System.Security.Cryptography.X509Certificates; using System.Threading; using System.Threading.Tasks; +using MQTTnet.Client; namespace MQTTnet.Implementations { diff --git a/Source/MQTTnet/Internal/TaskExtensions.cs b/Source/MQTTnet/Internal/TaskExtensions.cs index b10c3f56..89d1a301 100644 --- a/Source/MQTTnet/Internal/TaskExtensions.cs +++ b/Source/MQTTnet/Internal/TaskExtensions.cs @@ -1,6 +1,5 @@ using MQTTnet.Diagnostics; using System.Threading.Tasks; -using MQTTnet.Diagnostics.Logger; namespace MQTTnet.Internal { diff --git a/Source/MQTTnet/LowLevelClient/ILowLevelMqttClient.cs b/Source/MQTTnet/LowLevelClient/ILowLevelMqttClient.cs index 1734bf43..116b14d8 100644 --- a/Source/MQTTnet/LowLevelClient/ILowLevelMqttClient.cs +++ b/Source/MQTTnet/LowLevelClient/ILowLevelMqttClient.cs @@ -1,8 +1,8 @@ -using MQTTnet.Client.Options; -using MQTTnet.Packets; +using MQTTnet.Packets; using System; using System.Threading; using System.Threading.Tasks; +using MQTTnet.Client; namespace MQTTnet.LowLevelClient { diff --git a/Source/MQTTnet/LowLevelClient/LowLevelMqttClient.cs b/Source/MQTTnet/LowLevelClient/LowLevelMqttClient.cs index 7df0ac3f..3bed281b 100644 --- a/Source/MQTTnet/LowLevelClient/LowLevelMqttClient.cs +++ b/Source/MQTTnet/LowLevelClient/LowLevelMqttClient.cs @@ -1,27 +1,26 @@ using MQTTnet.Adapter; -using MQTTnet.Client.Options; using MQTTnet.Diagnostics; using MQTTnet.Packets; using System; using System.Threading; using System.Threading.Tasks; -using MQTTnet.Diagnostics.Logger; +using MQTTnet.Client; namespace MQTTnet.LowLevelClient { public sealed class LowLevelMqttClient : ILowLevelMqttClient { + readonly IMqttNetLogger _rootLogger; readonly MqttNetSourceLogger _logger; readonly IMqttClientAdapterFactory _clientAdapterFactory; IMqttChannelAdapter _adapter; - IMqttClientOptions _options; - + public LowLevelMqttClient(IMqttClientAdapterFactory clientAdapterFactory, IMqttNetLogger logger) { _clientAdapterFactory = clientAdapterFactory ?? throw new ArgumentNullException(nameof(clientAdapterFactory)); - if (logger is null) throw new ArgumentNullException(nameof(logger)); + _rootLogger = logger ?? throw new ArgumentNullException(nameof(logger)); _logger = logger.WithSource(nameof(LowLevelMqttClient)); } @@ -36,15 +35,13 @@ namespace MQTTnet.LowLevelClient throw new InvalidOperationException("Low level MQTT client is already connected. Disconnect first before connecting again."); } - var newAdapter = _clientAdapterFactory.CreateClientAdapter(options); + var newAdapter = _clientAdapterFactory.CreateClientAdapter(options, _rootLogger); try { _logger.Verbose("Trying to connect with server '{0}' (Timeout={1}).", options.ChannelOptions, options.CommunicationTimeout); await newAdapter.ConnectAsync(options.CommunicationTimeout, cancellationToken).ConfigureAwait(false); _logger.Verbose("Connection with server established."); - - _options = options; } catch (Exception) { diff --git a/Source/MQTTnet/MQTTnet.csproj.DotSettings b/Source/MQTTnet/MQTTnet.csproj.DotSettings index 67fc794f..da48a98e 100644 --- a/Source/MQTTnet/MQTTnet.csproj.DotSettings +++ b/Source/MQTTnet/MQTTnet.csproj.DotSettings @@ -1,5 +1,17 @@  + True + True + True + True + True + True + True + True + True + True + True True + True True True True \ No newline at end of file diff --git a/Source/MQTTnet/MqttApplicationMessage.cs b/Source/MQTTnet/MqttApplicationMessage.cs index a05ba1e3..fe3d3343 100644 --- a/Source/MQTTnet/MqttApplicationMessage.cs +++ b/Source/MQTTnet/MqttApplicationMessage.cs @@ -107,6 +107,6 @@ namespace MQTTnet /// The broker will return the subscription identifier associated with this PUBLISH packet and the PUBLISH packet to the client when need to forward PUBLISH packets matching this subscription to this client. /// Hint: MQTT 5 feature only. /// - public List SubscriptionIdentifiers { get; set; } + public List SubscriptionIdentifiers { get; set; } = new List(); } } diff --git a/Source/MQTTnet/MqttFactory.cs b/Source/MQTTnet/MqttFactory.cs index fbdec74e..a8ad266c 100644 --- a/Source/MQTTnet/MqttFactory.cs +++ b/Source/MQTTnet/MqttFactory.cs @@ -6,11 +6,7 @@ using MQTTnet.Server; using System; using System.Collections.Generic; using System.Linq; -using MQTTnet.Client.Disconnecting; -using MQTTnet.Client.Options; -using MQTTnet.Client.Subscribing; -using MQTTnet.Client.Unsubscribing; -using MQTTnet.Diagnostics.Logger; +using MQTTnet.Diagnostics; namespace MQTTnet { @@ -25,14 +21,15 @@ namespace MQTTnet public MqttFactory(IMqttNetLogger logger) { DefaultLogger = logger ?? throw new ArgumentNullException(nameof(logger)); - _clientAdapterFactory = new MqttClientAdapterFactory(logger); + + _clientAdapterFactory = new MqttClientAdapterFactory(); } public IMqttNetLogger DefaultLogger { get; } public IList> DefaultServerAdapters { get; } = new List> { - factory => new MqttTcpServerAdapter(factory.DefaultLogger) + factory => new MqttTcpServerAdapter() }; public IDictionary Properties { get; } = new Dictionary(); diff --git a/Source/MQTTnet/MqttTopicFilterBuilder.cs b/Source/MQTTnet/MqttTopicFilterBuilder.cs index 055f655f..f37e63ae 100644 --- a/Source/MQTTnet/MqttTopicFilterBuilder.cs +++ b/Source/MQTTnet/MqttTopicFilterBuilder.cs @@ -1,15 +1,11 @@ using MQTTnet.Exceptions; using MQTTnet.Protocol; using System; +using MQTTnet.Packets; namespace MQTTnet { - [Obsolete("Use MqttTopicFilterBuilder instead. It is just a renamed version to align with general namings in this lib.")] - public class TopicFilterBuilder : MqttTopicFilterBuilder - { - } - - public class MqttTopicFilterBuilder + public sealed class MqttTopicFilterBuilder { /// /// The quality of service level. diff --git a/Source/MQTTnet/MqttTopicFilter.cs b/Source/MQTTnet/Packets/MqttTopicFilter.cs similarity index 88% rename from Source/MQTTnet/MqttTopicFilter.cs rename to Source/MQTTnet/Packets/MqttTopicFilter.cs index 214aa322..8df37f59 100644 --- a/Source/MQTTnet/MqttTopicFilter.cs +++ b/Source/MQTTnet/Packets/MqttTopicFilter.cs @@ -1,15 +1,8 @@ using MQTTnet.Protocol; -using System; -namespace MQTTnet +namespace MQTTnet.Packets { - [Obsolete("Use MqttTopicFilter instead. It is just a renamed version to align with general namings in this lib.")] - public class TopicFilter : MqttTopicFilter - { - } - - // TODO: Consider using struct instead. - public class MqttTopicFilter + public sealed class MqttTopicFilter { /// /// Gets or sets the MQTT topic. diff --git a/Source/MQTTnet/Server/Events/InterceptingMqttClientSubscriptionEventArgs.cs b/Source/MQTTnet/Server/Events/InterceptingMqttClientSubscriptionEventArgs.cs index 02bb2405..17c85d34 100644 --- a/Source/MQTTnet/Server/Events/InterceptingMqttClientSubscriptionEventArgs.cs +++ b/Source/MQTTnet/Server/Events/InterceptingMqttClientSubscriptionEventArgs.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.Threading; +using MQTTnet.Packets; namespace MQTTnet.Server { diff --git a/Source/MQTTnet/Server/Events/InterceptingPacketEventArgs.cs b/Source/MQTTnet/Server/Events/InterceptingPacketEventArgs.cs index 4cecbd26..e3d2e52b 100644 --- a/Source/MQTTnet/Server/Events/InterceptingPacketEventArgs.cs +++ b/Source/MQTTnet/Server/Events/InterceptingPacketEventArgs.cs @@ -20,6 +20,11 @@ namespace MQTTnet.Server /// Gets or sets the MQTT packet which was received or will be sent. /// public MqttBasePacket Packet { get; set; } + + /// + /// Gets or sets whether the packet should be processed or not. + /// + public bool ProcessPacket { get; set; } = true; /// /// Gets the cancellation token from the connection managing thread. diff --git a/Source/MQTTnet/Server/Events/MqttClientSubscribedTopicEventArgs.cs b/Source/MQTTnet/Server/Events/MqttClientSubscribedTopicEventArgs.cs index 23850b22..b94ed184 100644 --- a/Source/MQTTnet/Server/Events/MqttClientSubscribedTopicEventArgs.cs +++ b/Source/MQTTnet/Server/Events/MqttClientSubscribedTopicEventArgs.cs @@ -1,4 +1,5 @@ using System; +using MQTTnet.Packets; namespace MQTTnet.Server { diff --git a/Source/MQTTnet/Server/Events/PreparingMqttClientSessionEventArgs.cs b/Source/MQTTnet/Server/Events/PreparingMqttClientSessionEventArgs.cs index 6794bfe7..14968984 100644 --- a/Source/MQTTnet/Server/Events/PreparingMqttClientSessionEventArgs.cs +++ b/Source/MQTTnet/Server/Events/PreparingMqttClientSessionEventArgs.cs @@ -1,7 +1,6 @@ using System; using System.Collections.Generic; using MQTTnet.Packets; -using MQTTnet.Server.Internal; namespace MQTTnet.Server { diff --git a/Source/MQTTnet/Server/Internal/CheckSubscriptionsResult.cs b/Source/MQTTnet/Server/Internal/CheckSubscriptionsResult.cs index b00b2083..be375d3a 100644 --- a/Source/MQTTnet/Server/Internal/CheckSubscriptionsResult.cs +++ b/Source/MQTTnet/Server/Internal/CheckSubscriptionsResult.cs @@ -1,7 +1,7 @@ using System.Collections.Generic; using MQTTnet.Protocol; -namespace MQTTnet.Server.Internal +namespace MQTTnet.Server { public struct CheckSubscriptionsResult { diff --git a/Source/MQTTnet/Server/Internal/MqttApplicationMessageInterceptorInvoker.cs b/Source/MQTTnet/Server/Internal/MqttApplicationMessageInterceptorInvoker.cs index ad30a733..ffff15a0 100644 --- a/Source/MQTTnet/Server/Internal/MqttApplicationMessageInterceptorInvoker.cs +++ b/Source/MQTTnet/Server/Internal/MqttApplicationMessageInterceptorInvoker.cs @@ -3,7 +3,7 @@ using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; -namespace MQTTnet.Server.Internal +namespace MQTTnet.Server { public sealed class MqttApplicationMessageInterceptorInvoker { @@ -45,6 +45,14 @@ namespace MQTTnet.Server.Internal CancellationToken = cancellationToken }; + if (string.IsNullOrEmpty(eventArgs.ApplicationMessage.Topic)) + { + // This can happen if a topic alias us used but the topic is + // unknown to the server. + eventArgs.Response.ReasonCode = MqttApplicationMessageResponseReasonCode.TopicNameInvalid; + eventArgs.ProcessPublish = false; + } + await _eventContainer.InterceptingClientPublishEvent.InvokeAsync(eventArgs).ConfigureAwait(false); // Expose results. diff --git a/Source/MQTTnet/Server/Internal/MqttClientConnection.cs b/Source/MQTTnet/Server/Internal/MqttClientConnection.cs index 285be796..3f929278 100644 --- a/Source/MQTTnet/Server/Internal/MqttClientConnection.cs +++ b/Source/MQTTnet/Server/Internal/MqttClientConnection.cs @@ -3,8 +3,8 @@ using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; using MQTTnet.Adapter; -using MQTTnet.Client.Disconnecting; -using MQTTnet.Diagnostics.Logger; +using MQTTnet.Client; +using MQTTnet.Diagnostics; using MQTTnet.Exceptions; using MQTTnet.Formatter; using MQTTnet.Internal; @@ -12,7 +12,7 @@ using MQTTnet.PacketDispatcher; using MQTTnet.Packets; using MQTTnet.Protocol; -namespace MQTTnet.Server.Internal +namespace MQTTnet.Server { public sealed class MqttClientConnection : IDisposable { @@ -135,7 +135,8 @@ namespace MQTTnet.Server.Internal { var willPublishPacket = _packetFactories.Publish.Create(Session.LatestConnectPacket); var willApplicationMessage = _applicationMessageFactory.Create(willPublishPacket); - _ = _sessionsManager.DispatchPublishPacket(Id, willApplicationMessage); + + _= _sessionsManager.DispatchPublishPacket(Id, willApplicationMessage); Session.WillMessageSent = true; } @@ -155,6 +156,11 @@ namespace MQTTnet.Server.Internal await _eventContainer.InterceptingOutboundPacketEvent.InvokeAsync(interceptingPacketEventArgs).ConfigureAwait(false); packet = interceptingPacketEventArgs.Packet; + if (!interceptingPacketEventArgs.ProcessPacket || packet == null) + { + return; + } + await ChannelAdapter.SendPacketAsync(packet, cancellationToken).ConfigureAwait(false); Statistics.HandleSentPacket(packet); } @@ -169,7 +175,7 @@ namespace MQTTnet.Server.Internal while (!cancellationToken.IsCancellationRequested) { var packet = await ChannelAdapter.ReceivePacketAsync(cancellationToken).ConfigureAwait(false); - + var interceptingPacketEventArgs = new InterceptingPacketEventArgs { ClientId = Id, @@ -181,10 +187,10 @@ namespace MQTTnet.Server.Internal await _eventContainer.InterceptingInboundPacketEvent.InvokeAsync(interceptingPacketEventArgs).ConfigureAwait(false); packet = interceptingPacketEventArgs.Packet; - if (packet == null) + if (!interceptingPacketEventArgs.ProcessPacket || packet == null) { - // The client has closed the connection gracefully. - return; + // Restart the receiving process to get the next packet ignoring the current one.. + continue; } Statistics.HandleReceivedPacket(packet); @@ -277,8 +283,6 @@ namespace MQTTnet.Server.Internal { await SendPacketAsync(packetBusItem.Packet, cancellationToken).ConfigureAwait(false); packetBusItem.MarkAsDelivered(); - - _logger.Verbose("Sent packet '{0}'.", packetBusItem.Packet); } catch (OperationCanceledException) { @@ -288,47 +292,6 @@ namespace MQTTnet.Server.Internal { packetBusItem.MarkAsFailed(exception); } - - // TODO: Move QoS 1 + 2 to other layer! - // if (queuedApplicationMessage == null) - // { - // continue; - // } - // - // publishPacket = await CreatePublishPacket(queuedApplicationMessage).ConfigureAwait(false); - // if (publishPacket == null) - // { - // continue; - // } - // - // if (publishPacket.QualityOfServiceLevel == MqttQualityOfServiceLevel.AtMostOnce) - // { - // await SendPacketAsync(publishPacket, cancellationToken).ConfigureAwait(false); - // } - // else if (publishPacket.QualityOfServiceLevel == MqttQualityOfServiceLevel.AtLeastOnce) - // { - // using (var awaitable = _packetDispatcher.AddAwaitable(publishPacket.PacketIdentifier)) - // { - // await SendPacketAsync(publishPacket, cancellationToken).ConfigureAwait(false); - // await awaitable.WaitOneAsync(_serverOptions.DefaultCommunicationTimeout).ConfigureAwait(false); - // } - // } - // else if (publishPacket.QualityOfServiceLevel == MqttQualityOfServiceLevel.ExactlyOnce) - // { - // using (var awaitableRec = _packetDispatcher.AddAwaitable(publishPacket.PacketIdentifier)) - // using (var awaitableComp = _packetDispatcher.AddAwaitable(publishPacket.PacketIdentifier)) - // { - // await SendPacketAsync(publishPacket, cancellationToken).ConfigureAwait(false); - // var pubRecPacket = await awaitableRec.WaitOneAsync(_serverOptions.DefaultCommunicationTimeout).ConfigureAwait(false); - // - // var pubRelPacket = ChannelAdapter.PacketFormatterAdapter.DataConverter.CreatePubRelPacket(pubRecPacket, MqttApplicationMessageReceivedReasonCode.Success); - // await SendPacketAsync(pubRelPacket, cancellationToken).ConfigureAwait(false); - // - // await awaitableComp.WaitOneAsync(_serverOptions.DefaultCommunicationTimeout).ConfigureAwait(false); - // } - // } - - _logger.Verbose("Client '{0}': Queued application message sent.", Id); } } catch (OperationCanceledException) @@ -361,35 +324,7 @@ namespace MQTTnet.Server.Internal StopInternal(); } } - - // public async Task CreatePublishPacket(MqttQueuedApplicationMessage queuedApplicationMessage) - // { - // var publishPacket = ChannelAdapter.PacketFormatterAdapter.DataConverter.CreatePublishPacket(queuedApplicationMessage.ApplicationMessage); - // publishPacket.QualityOfServiceLevel = queuedApplicationMessage.SubscriptionQualityOfServiceLevel; - // - // if (ChannelAdapter.PacketFormatterAdapter.ProtocolVersion == MqttProtocolVersion.V500) - // { - // publishPacket.Properties.SubscriptionIdentifiers.AddRange(queuedApplicationMessage.SubscriptionIdentifiers ?? new List()); - // } - // - // // Set the retain flag to true according to [MQTT-3.3.1-8] and [MQTT-3.3.1-9]. - // publishPacket.Retain = queuedApplicationMessage.IsRetainedMessage; - // - // publishPacket = await InvokeClientMessageQueueInterceptor(publishPacket, queuedApplicationMessage).ConfigureAwait(false); - // if (publishPacket == null) - // { - // // The interceptor has decided that the message is not relevant and will be fully ignored. - // return null; - // } - // - // if (publishPacket.QualityOfServiceLevel > 0) - // { - // publishPacket.PacketIdentifier = _packetIdentifierProvider.GetNextPacketIdentifier(); - // } - // - // return publishPacket; - // } - + void StopInternal() { _cancellationToken?.Cancel(); @@ -512,6 +447,7 @@ namespace MQTTnet.Server.Internal } else { + _logger.Warning("Client '{0}': Received invalid topic alias ({1}).", Id, publishPacket.Properties.TopicAlias); } } } @@ -536,43 +472,8 @@ namespace MQTTnet.Server.Internal } catch (Exception exception) { - _logger.Warning(exception, "Client '{{0}}': Error while sending DISCONNECT packet (Reason = {1}).", Id, reason); + _logger.Warning(exception, "Client '{0}': Error while sending DISCONNECT packet (Reason = {1}).", Id, reason); } } - - // // TODO: Fix! - // async Task InvokeClientMessageQueueInterceptor(MqttPublishPacket publishPacket, MqttQueuedApplicationMessage queuedApplicationMessage) - // { - // if (_serverOptions.ClientMessageQueueInterceptor == null) - // { - // return publishPacket; - // } - // - // var context = new MqttClientMessageQueueInterceptorContext - // { - // SenderClientId = queuedApplicationMessage.SenderClientId, - // ReceiverClientId = Id, - // ApplicationMessage = queuedApplicationMessage.ApplicationMessage, - // SubscriptionQualityOfServiceLevel = queuedApplicationMessage.SubscriptionQualityOfServiceLevel - // }; - // - // if (_serverOptions.ClientMessageQueueInterceptor != null) - // { - // await _serverOptions.ClientMessageQueueInterceptor.InterceptClientMessageQueueEnqueueAsync(context).ConfigureAwait(false); - // } - // - // if (!context.AcceptEnqueue || context.ApplicationMessage == null) - // { - // return null; - // } - // - // publishPacket.Topic = context.ApplicationMessage.Topic; - // publishPacket.Payload = context.ApplicationMessage.Payload; - // publishPacket.QualityOfServiceLevel = context.SubscriptionQualityOfServiceLevel; - // - // return publishPacket; - // } - // - } } \ No newline at end of file diff --git a/Source/MQTTnet/Server/Internal/MqttClientConnectionStatistics.cs b/Source/MQTTnet/Server/Internal/MqttClientConnectionStatistics.cs index 5c55d65b..352a686d 100644 --- a/Source/MQTTnet/Server/Internal/MqttClientConnectionStatistics.cs +++ b/Source/MQTTnet/Server/Internal/MqttClientConnectionStatistics.cs @@ -2,7 +2,7 @@ using System.Threading; using MQTTnet.Packets; -namespace MQTTnet.Server.Internal +namespace MQTTnet.Server { public sealed class MqttClientConnectionStatistics { diff --git a/Source/MQTTnet/Server/Internal/MqttClientSession.cs b/Source/MQTTnet/Server/Internal/MqttClientSession.cs index 4d16048d..eb12600c 100644 --- a/Source/MQTTnet/Server/Internal/MqttClientSession.cs +++ b/Source/MQTTnet/Server/Internal/MqttClientSession.cs @@ -8,7 +8,7 @@ using MQTTnet.Internal; using MQTTnet.Packets; using MQTTnet.Protocol; -namespace MQTTnet.Server.Internal +namespace MQTTnet.Server { public sealed class MqttClientSession : IDisposable { diff --git a/Source/MQTTnet/Server/Internal/MqttClientSessionsManager.cs b/Source/MQTTnet/Server/Internal/MqttClientSessionsManager.cs index ef77c788..13947ac4 100644 --- a/Source/MQTTnet/Server/Internal/MqttClientSessionsManager.cs +++ b/Source/MQTTnet/Server/Internal/MqttClientSessionsManager.cs @@ -5,15 +5,15 @@ using System.Linq; using System.Threading; using System.Threading.Tasks; using MQTTnet.Adapter; -using MQTTnet.Client.Disconnecting; -using MQTTnet.Diagnostics.Logger; +using MQTTnet.Client; +using MQTTnet.Diagnostics; using MQTTnet.Exceptions; using MQTTnet.Formatter; using MQTTnet.Internal; using MQTTnet.Packets; using MQTTnet.Protocol; -namespace MQTTnet.Server.Internal +namespace MQTTnet.Server { public sealed class MqttClientSessionsManager : IDisposable { @@ -406,8 +406,6 @@ namespace MQTTnet.Server.Internal continue; } - _logger.Verbose("Client '{0}': Queued application message with topic '{1}'.", clientSession.Id, applicationMessage.Topic); - var newPublishPacket = _packetFactories.Publish.Create(applicationMessage); newPublishPacket.QualityOfServiceLevel = checkSubscriptionsResult.QualityOfServiceLevel; newPublishPacket.Properties.SubscriptionIdentifiers.AddRange(checkSubscriptionsResult.SubscriptionIdentifiers); @@ -430,6 +428,8 @@ namespace MQTTnet.Server.Internal clientSession.EnqueuePacket(new MqttPacketBusItem(newPublishPacket)); deliveryCount++; + + _logger.Verbose("Client '{0}': Queued PUBLISH packet with topic '{1}'.", clientSession.Id, applicationMessage.Topic); } if (deliveryCount == 0) diff --git a/Source/MQTTnet/Server/Internal/MqttClientSubscriptionsManager.cs b/Source/MQTTnet/Server/Internal/MqttClientSubscriptionsManager.cs index a01aa8e2..013a5040 100644 --- a/Source/MQTTnet/Server/Internal/MqttClientSubscriptionsManager.cs +++ b/Source/MQTTnet/Server/Internal/MqttClientSubscriptionsManager.cs @@ -6,7 +6,7 @@ using System.Threading.Tasks; using MQTTnet.Packets; using MQTTnet.Protocol; -namespace MQTTnet.Server.Internal +namespace MQTTnet.Server { public sealed class MqttClientSubscriptionsManager { diff --git a/Source/MQTTnet/Server/Internal/MqttRetainedMessagesManager.cs b/Source/MQTTnet/Server/Internal/MqttRetainedMessagesManager.cs index 4555150b..645b8f9a 100644 --- a/Source/MQTTnet/Server/Internal/MqttRetainedMessagesManager.cs +++ b/Source/MQTTnet/Server/Internal/MqttRetainedMessagesManager.cs @@ -3,11 +3,11 @@ using System.Collections.Generic; using System.Linq; using System.Threading; using System.Threading.Tasks; -using MQTTnet.Diagnostics.Logger; +using MQTTnet.Diagnostics; using MQTTnet.Implementations; using MQTTnet.Internal; -namespace MQTTnet.Server.Internal +namespace MQTTnet.Server { public sealed class MqttRetainedMessagesManager : IMqttRetainedMessagesManager { diff --git a/Source/MQTTnet/Server/Internal/MqttServerEventContainer.cs b/Source/MQTTnet/Server/Internal/MqttServerEventContainer.cs index 3820377e..8e137401 100644 --- a/Source/MQTTnet/Server/Internal/MqttServerEventContainer.cs +++ b/Source/MQTTnet/Server/Internal/MqttServerEventContainer.cs @@ -1,20 +1,10 @@ using System; -using MQTTnet.Diagnostics.Logger; using MQTTnet.Internal; -namespace MQTTnet.Server.Internal +namespace MQTTnet.Server { public sealed class MqttServerEventContainer { - readonly MqttNetSourceLogger _logger; - - public MqttServerEventContainer(IMqttNetLogger logger) - { - if (logger is null) throw new ArgumentNullException(nameof(logger)); - - _logger = logger.WithSource(nameof(MqttServerEventContainer)); - } - public AsyncEvent InterceptingClientSubscriptionEvent { get; } = new AsyncEvent(); public AsyncEvent InterceptingClientUnsubscriptionEvent { get; } = new AsyncEvent(); @@ -22,15 +12,23 @@ namespace MQTTnet.Server.Internal public AsyncEvent InterceptingClientPublishEvent { get; } = new AsyncEvent(); public AsyncEvent ValidatingClientConnectionEvent { get; } = new AsyncEvent(); + public AsyncEvent ClientConnectedEvent { get; } = new AsyncEvent(); + public AsyncEvent ClientDisconnectedEvent { get; } = new AsyncEvent(); + public AsyncEvent ClientSubscribedTopicEvent { get; } = new AsyncEvent(); + public AsyncEvent ClientUnsubscribedTopicEvent { get; } = new AsyncEvent(); public AsyncEvent PreparingClientSessionEvent { get; } = new AsyncEvent(); public AsyncEvent ApplicationMessageNotConsumedEvent { get; } = new AsyncEvent(); + public AsyncEvent RetainedApplicationMessageChangedEvent { get; } = new AsyncEvent(); + + public AsyncEvent RetainedApplicationMessageClearedEvent { get; } = new AsyncEvent(); + public AsyncEvent InterceptingInboundPacketEvent { get; } = new AsyncEvent(); public AsyncEvent InterceptingOutboundPacketEvent { get; } = new AsyncEvent(); @@ -38,124 +36,5 @@ namespace MQTTnet.Server.Internal public AsyncEvent StartedEvent { get; } = new AsyncEvent(); public AsyncEvent StoppedEvent { get; } = new AsyncEvent(); - - // public async Task SafeNotifyClientConnectedAsync(MqttConnectPacket connectPacket, IMqttChannelAdapter channelAdapter) - // { - // try - // { - // var eventArgs = new MqttServerClientConnectedEventArgs - // { - // ClientId = connectPacket.ClientId, - // UserName = connectPacket.Username, - // ProtocolVersion = channelAdapter.PacketFormatterAdapter.ProtocolVersion, - // Endpoint = channelAdapter.Endpoint - // }; - // - // var handler = ClientConnectedHandler; - // if (handler != null) - // { - // await handler.HandleClientConnectedAsync(eventArgs).ConfigureAwait(false); - // } - // - // await ClientConnectedEvent.InvokeAsync(eventArgs).ConfigureAwait(false); - // } - // catch (Exception exception) - // { - // _logger.Error(exception, "Error while handling custom 'ClientConnected' event."); - // } - // } - - // public async Task SafeNotifyClientDisconnectedAsync(string clientId, MqttClientDisconnectType disconnectType, string endpoint) - // { - // try - // { - // var eventArgs = new MqttServerClientDisconnectedEventArgs - // { - // ClientId = clientId, - // DisconnectType = disconnectType, - // Endpoint = endpoint - // }; - // - // var handler = ClientDisconnectedHandler; - // if (handler != null) - // { - // await handler.HandleClientDisconnectedAsync(eventArgs).ConfigureAwait(false); - // } - // - // await ClientDisconnectedEvent.InvokeAsync(eventArgs).ConfigureAwait(false); - // } - // catch (Exception exception) - // { - // _logger.Error(exception, "Error while handling custom 'ClientDisconnected' event."); - // } - // } - - // public async Task SafeNotifyClientSubscribedTopicAsync(string clientId, MqttTopicFilter topicFilter) - // { - // try - // { - // var eventArgs = new MqttServerClientSubscribedTopicEventArgs - // { - // ClientId = clientId, - // TopicFilter = topicFilter - // }; - // - // var handler = ClientSubscribedTopicHandler; - // if (handler != null) - // { - // await handler.HandleClientSubscribedTopicAsync(eventArgs).ConfigureAwait(false); - // } - // - // await ClientSubscribedTopicEvent.InvokeAsync(eventArgs).ConfigureAwait(false); - // } - // catch (Exception exception) - // { - // _logger.Error(exception, "Error while handling custom 'ClientSubscribedTopic' event."); - // } - // } - - // public async Task SafeNotifyClientUnsubscribedTopicAsync(string clientId, string topicFilter) - // { - // try - // { - // var eventArgs = new MqttServerClientUnsubscribedTopicEventArgs - // { - // ClientId = clientId, - // TopicFilter = topicFilter - // }; - // - // var handler = ClientUnsubscribedTopicHandler; - // if (handler != null) - // { - // await handler.HandleClientUnsubscribedTopicAsync(eventArgs).ConfigureAwait(false); - // } - // - // await ClientUnsubscribedTopicEvent.InvokeAsync(eventArgs).ConfigureAwait(false); - // } - // catch (Exception exception) - // { - // _logger.Error(exception, "Error while handling custom 'ClientUnsubscribedTopic' event."); - // } - // } - - // public async Task SafeNotifyApplicationMessageReceivedAsync(string senderClientId, MqttApplicationMessage applicationMessage) - // { - // try - // { - // var eventArgs = new MqttApplicationMessageReceivedEventArgs(senderClientId, applicationMessage, null, null); - // - // var handler = ApplicationMessageReceivedHandler; - // if (handler != null) - // { - // await handler.HandleApplicationMessageReceivedAsync(eventArgs).ConfigureAwait(false); - // } - // - // await ApplicationMessageReceivedEvent.InvokeAsync(eventArgs).ConfigureAwait(false); - // } - // catch (Exception exception) - // { - // _logger.Error(exception, "Error while handling custom 'ApplicationMessageReceived' event."); - // } - // } } } diff --git a/Source/MQTTnet/Server/Internal/MqttServerKeepAliveMonitor.cs b/Source/MQTTnet/Server/Internal/MqttServerKeepAliveMonitor.cs index f73af5ac..4eda86a0 100644 --- a/Source/MQTTnet/Server/Internal/MqttServerKeepAliveMonitor.cs +++ b/Source/MQTTnet/Server/Internal/MqttServerKeepAliveMonitor.cs @@ -1,12 +1,12 @@ using System; using System.Threading; using System.Threading.Tasks; -using MQTTnet.Client.Disconnecting; -using MQTTnet.Diagnostics.Logger; +using MQTTnet.Client; +using MQTTnet.Diagnostics; using MQTTnet.Implementations; using MQTTnet.Internal; -namespace MQTTnet.Server.Internal +namespace MQTTnet.Server { public sealed class MqttServerKeepAliveMonitor { diff --git a/Source/MQTTnet/Server/Internal/MqttSubscribeResult.cs b/Source/MQTTnet/Server/Internal/MqttSubscribeResult.cs index 1bc09c5e..76195220 100644 --- a/Source/MQTTnet/Server/Internal/MqttSubscribeResult.cs +++ b/Source/MQTTnet/Server/Internal/MqttSubscribeResult.cs @@ -1,7 +1,7 @@ using System.Collections.Generic; using MQTTnet.Protocol; -namespace MQTTnet.Server.Internal +namespace MQTTnet.Server { public sealed class MqttSubscribeResult { diff --git a/Source/MQTTnet/Server/Internal/MqttSubscription.cs b/Source/MQTTnet/Server/Internal/MqttSubscription.cs index a78663bc..883445ad 100644 --- a/Source/MQTTnet/Server/Internal/MqttSubscription.cs +++ b/Source/MQTTnet/Server/Internal/MqttSubscription.cs @@ -1,6 +1,6 @@ using MQTTnet.Protocol; -namespace MQTTnet.Server.Internal +namespace MQTTnet.Server { public sealed class MqttSubscription { diff --git a/Source/MQTTnet/Server/Internal/MqttTopicFilterCompareResult.cs b/Source/MQTTnet/Server/Internal/MqttTopicFilterCompareResult.cs index 118aa82b..481ff5f3 100644 --- a/Source/MQTTnet/Server/Internal/MqttTopicFilterCompareResult.cs +++ b/Source/MQTTnet/Server/Internal/MqttTopicFilterCompareResult.cs @@ -1,4 +1,4 @@ -namespace MQTTnet.Server.Internal +namespace MQTTnet.Server { public enum MqttTopicFilterCompareResult { diff --git a/Source/MQTTnet/Server/Internal/MqttTopicFilterComparer.cs b/Source/MQTTnet/Server/Internal/MqttTopicFilterComparer.cs index 0c2ebff3..89d390f7 100644 --- a/Source/MQTTnet/Server/Internal/MqttTopicFilterComparer.cs +++ b/Source/MQTTnet/Server/Internal/MqttTopicFilterComparer.cs @@ -1,4 +1,4 @@ -namespace MQTTnet.Server.Internal +namespace MQTTnet.Server { public static class MqttTopicFilterComparer { diff --git a/Source/MQTTnet/Server/Internal/MqttUnsubscribeResult.cs b/Source/MQTTnet/Server/Internal/MqttUnsubscribeResult.cs index 31e0514d..45d6d5d3 100644 --- a/Source/MQTTnet/Server/Internal/MqttUnsubscribeResult.cs +++ b/Source/MQTTnet/Server/Internal/MqttUnsubscribeResult.cs @@ -1,7 +1,7 @@ using System.Collections.Generic; using MQTTnet.Protocol; -namespace MQTTnet.Server.Internal +namespace MQTTnet.Server { public sealed class MqttUnsubscribeResult { diff --git a/Source/MQTTnet/Server/MqttServer.cs b/Source/MQTTnet/Server/MqttServer.cs index 04181b0f..341a2cef 100644 --- a/Source/MQTTnet/Server/MqttServer.cs +++ b/Source/MQTTnet/Server/MqttServer.cs @@ -1,5 +1,4 @@ using MQTTnet.Adapter; -using MQTTnet.Client.Publishing; using MQTTnet.Exceptions; using MQTTnet.Protocol; using System; @@ -7,16 +6,17 @@ using System.Collections.Generic; using System.Linq; using System.Threading; using System.Threading.Tasks; -using MQTTnet.Diagnostics.Logger; +using MQTTnet.Client; +using MQTTnet.Diagnostics; using MQTTnet.Implementations; using MQTTnet.Internal; -using MQTTnet.Server.Internal; +using MQTTnet.Packets; namespace MQTTnet.Server { public class MqttServer : Disposable { - readonly MqttServerEventContainer _eventContainer; + readonly MqttServerEventContainer _eventContainer = new MqttServerEventContainer(); readonly ICollection _adapters; readonly MqttServerOptions _options; @@ -38,8 +38,6 @@ namespace MQTTnet.Server if (logger == null) throw new ArgumentNullException(nameof(logger)); _logger = logger.WithSource(nameof(MqttServer)); _rootLogger = logger; - - _eventContainer = new MqttServerEventContainer(logger); } public event Func StartedAsync @@ -125,7 +123,19 @@ namespace MQTTnet.Server add => _eventContainer.ApplicationMessageNotConsumedEvent.AddHandler(value); remove => _eventContainer.ApplicationMessageNotConsumedEvent.RemoveHandler(value); } + + public event Func RetainedApplicationMessageChangedAsync + { + add => _eventContainer.RetainedApplicationMessageChangedEvent.AddHandler(value); + remove => _eventContainer.RetainedApplicationMessageChangedEvent.RemoveHandler(value); + } + public event Func RetainedApplicationMessagesClearedAsync + { + add => _eventContainer.RetainedApplicationMessageClearedEvent.AddHandler(value); + remove => _eventContainer.RetainedApplicationMessageClearedEvent.RemoveHandler(value); + } + public bool IsStarted => _cancellationTokenSource != null; public Task> GetClientStatusAsync() @@ -223,7 +233,7 @@ namespace MQTTnet.Server foreach (var adapter in _adapters) { adapter.ClientHandler = c => OnHandleClient(c, cancellationToken); - await adapter.StartAsync(_options).ConfigureAwait(false); + await adapter.StartAsync(_options, _rootLogger).ConfigureAwait(false); } _logger.Info("Started."); diff --git a/Source/MQTTnet/Server/MqttServerExtensions.cs b/Source/MQTTnet/Server/MqttServerExtensions.cs index 7a1f9ed8..0fcc01e3 100644 --- a/Source/MQTTnet/Server/MqttServerExtensions.cs +++ b/Source/MQTTnet/Server/MqttServerExtensions.cs @@ -1,8 +1,8 @@ -using MQTTnet.Client.Publishing; -using MQTTnet.Protocol; +using MQTTnet.Protocol; using System; using System.Threading; using System.Threading.Tasks; +using MQTTnet.Packets; namespace MQTTnet.Server { diff --git a/Source/MQTTnet/Server/Options/MqttServerOptions.cs b/Source/MQTTnet/Server/Options/MqttServerOptions.cs index cb5a584a..38a781bc 100644 --- a/Source/MQTTnet/Server/Options/MqttServerOptions.cs +++ b/Source/MQTTnet/Server/Options/MqttServerOptions.cs @@ -1,5 +1,4 @@ using System; -using MQTTnet.Server.Internal; namespace MQTTnet.Server { diff --git a/Source/MQTTnet/Server/Status/MqttClientStatus.cs b/Source/MQTTnet/Server/Status/MqttClientStatus.cs index 26d08358..fca72fc8 100644 --- a/Source/MQTTnet/Server/Status/MqttClientStatus.cs +++ b/Source/MQTTnet/Server/Status/MqttClientStatus.cs @@ -1,8 +1,7 @@ using System; using System.Threading.Tasks; -using MQTTnet.Client.Disconnecting; +using MQTTnet.Client; using MQTTnet.Formatter; -using MQTTnet.Server.Internal; namespace MQTTnet.Server { diff --git a/Source/MQTTnet/Server/Status/MqttSessionStatus.cs b/Source/MQTTnet/Server/Status/MqttSessionStatus.cs index 01237006..ac2e205d 100644 --- a/Source/MQTTnet/Server/Status/MqttSessionStatus.cs +++ b/Source/MQTTnet/Server/Status/MqttSessionStatus.cs @@ -4,7 +4,6 @@ using System.Threading.Tasks; using MQTTnet.Formatter; using MQTTnet.Implementations; using MQTTnet.Internal; -using MQTTnet.Server.Internal; namespace MQTTnet.Server { diff --git a/Source/MQTTnet/Server/Storage/IMqttRetainedMessagesManager.cs b/Source/MQTTnet/Server/Storage/IMqttRetainedMessagesManager.cs index a3e752da..7794aff8 100644 --- a/Source/MQTTnet/Server/Storage/IMqttRetainedMessagesManager.cs +++ b/Source/MQTTnet/Server/Storage/IMqttRetainedMessagesManager.cs @@ -1,6 +1,6 @@ using System.Collections.Generic; using System.Threading.Tasks; -using MQTTnet.Diagnostics.Logger; +using MQTTnet.Diagnostics; namespace MQTTnet.Server { diff --git a/Source/MQTTnet/Server/Storage/IMqttServerPersistedSession.cs b/Source/MQTTnet/Server/Storage/IMqttServerPersistedSession.cs index a7b015ef..b68ef81a 100644 --- a/Source/MQTTnet/Server/Storage/IMqttServerPersistedSession.cs +++ b/Source/MQTTnet/Server/Storage/IMqttServerPersistedSession.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using MQTTnet.Packets; namespace MQTTnet.Server { diff --git a/Tests/MQTTnet.AspNetCore.Tests/Mockups/ConnectionHandlerMockup.cs b/Tests/MQTTnet.AspNetCore.Tests/Mockups/ConnectionHandlerMockup.cs index 931a0b33..3e739d59 100644 --- a/Tests/MQTTnet.AspNetCore.Tests/Mockups/ConnectionHandlerMockup.cs +++ b/Tests/MQTTnet.AspNetCore.Tests/Mockups/ConnectionHandlerMockup.cs @@ -4,6 +4,7 @@ using MQTTnet.Formatter; using MQTTnet.Server; using System; using System.Threading.Tasks; +using MQTTnet.Diagnostics; namespace MQTTnet.AspNetCore.Tests.Mockups { @@ -12,10 +13,6 @@ namespace MQTTnet.AspNetCore.Tests.Mockups public TaskCompletionSource Context { get; } = new TaskCompletionSource(); public Func ClientHandler { get; set; } - public ConnectionHandlerMockup() - { - } - public async Task OnConnectedAsync(ConnectionContext connection) { try @@ -33,7 +30,7 @@ namespace MQTTnet.AspNetCore.Tests.Mockups } } - public Task StartAsync(MqttServerOptions options) + public Task StartAsync(MqttServerOptions options, IMqttNetLogger logger) { return Task.CompletedTask; } diff --git a/Tests/MQTTnet.AspNetCore.Tests/MqttConnectionContextTest.cs b/Tests/MQTTnet.AspNetCore.Tests/MqttConnectionContextTest.cs index 710f2263..ccfff01c 100644 --- a/Tests/MQTTnet.AspNetCore.Tests/MqttConnectionContextTest.cs +++ b/Tests/MQTTnet.AspNetCore.Tests/MqttConnectionContextTest.cs @@ -5,17 +5,16 @@ using Microsoft.Extensions.DependencyInjection; using Microsoft.VisualStudio.TestTools.UnitTesting; using System; -using System.Linq; +using System.Net; using System.Threading; using System.Threading.Tasks; using MQTTnet.Adapter; using MQTTnet.AspNetCore.Tests.Mockups; -using MQTTnet.Client.Options; using MQTTnet.Exceptions; using MQTTnet.Formatter; using MQTTnet.Packets; -using System.Net; using MQTTnet.AspNetCore.Extensions; +using MQTTnet.Client; using MQTTnet.Protocol; using MQTTnet.Tests.Extensions; diff --git a/Tests/MQTTnet.Benchmarks/ChannelAdapterBenchmark.cs b/Tests/MQTTnet.Benchmarks/ChannelAdapterBenchmark.cs index 7adef004..946f0d9d 100644 --- a/Tests/MQTTnet.Benchmarks/ChannelAdapterBenchmark.cs +++ b/Tests/MQTTnet.Benchmarks/ChannelAdapterBenchmark.cs @@ -5,7 +5,7 @@ using MQTTnet.Packets; using System; using System.IO; using System.Threading; -using MQTTnet.Diagnostics.Logger; +using MQTTnet.Diagnostics; using MQTTnet.Formatter; namespace MQTTnet.Benchmarks diff --git a/Tests/MQTTnet.Benchmarks/LoggerBenchmark.cs b/Tests/MQTTnet.Benchmarks/LoggerBenchmark.cs index f31f89ef..3a8253c7 100644 --- a/Tests/MQTTnet.Benchmarks/LoggerBenchmark.cs +++ b/Tests/MQTTnet.Benchmarks/LoggerBenchmark.cs @@ -1,6 +1,6 @@ using BenchmarkDotNet.Attributes; using BenchmarkDotNet.Jobs; -using MQTTnet.Diagnostics.Logger; +using MQTTnet.Diagnostics; namespace MQTTnet.Benchmarks { diff --git a/Tests/MQTTnet.Benchmarks/MessageProcessingBenchmark.cs b/Tests/MQTTnet.Benchmarks/MessageProcessingBenchmark.cs index 3c897cac..2e8dc4f7 100644 --- a/Tests/MQTTnet.Benchmarks/MessageProcessingBenchmark.cs +++ b/Tests/MQTTnet.Benchmarks/MessageProcessingBenchmark.cs @@ -1,7 +1,6 @@ using BenchmarkDotNet.Attributes; using BenchmarkDotNet.Jobs; using MQTTnet.Client; -using MQTTnet.Client.Options; using MQTTnet.Server; namespace MQTTnet.Benchmarks diff --git a/Tests/MQTTnet.Benchmarks/MessageProcessingMqttConnectionContextBenchmark.cs b/Tests/MQTTnet.Benchmarks/MessageProcessingMqttConnectionContextBenchmark.cs index 651f4007..ef9d4382 100644 --- a/Tests/MQTTnet.Benchmarks/MessageProcessingMqttConnectionContextBenchmark.cs +++ b/Tests/MQTTnet.Benchmarks/MessageProcessingMqttConnectionContextBenchmark.cs @@ -4,8 +4,7 @@ using Microsoft.AspNetCore; using Microsoft.AspNetCore.Hosting; using MQTTnet.AspNetCore.Client; using MQTTnet.AspNetCore.Extensions; -using MQTTnet.Client.Options; -using MQTTnet.Diagnostics.Logger; +using MQTTnet.Diagnostics; namespace MQTTnet.Benchmarks { diff --git a/Tests/MQTTnet.Benchmarks/MqttTcpChannelBenchmark.cs b/Tests/MQTTnet.Benchmarks/MqttTcpChannelBenchmark.cs index afe11051..64100f17 100644 --- a/Tests/MQTTnet.Benchmarks/MqttTcpChannelBenchmark.cs +++ b/Tests/MQTTnet.Benchmarks/MqttTcpChannelBenchmark.cs @@ -1,11 +1,11 @@ using BenchmarkDotNet.Attributes; using MQTTnet.Channel; -using MQTTnet.Client.Options; using MQTTnet.Implementations; using MQTTnet.Server; using System.Threading; using System.Threading.Tasks; -using MQTTnet.Diagnostics.Logger; +using MQTTnet.Client; +using MQTTnet.Diagnostics; namespace MQTTnet.Benchmarks { @@ -20,7 +20,7 @@ namespace MQTTnet.Benchmarks public void Setup() { var factory = new MqttFactory(); - var tcpServer = new MqttTcpServerAdapter(new MqttNetEventLogger()); + var tcpServer = new MqttTcpServerAdapter(); tcpServer.ClientHandler += args => { _serverChannel = diff --git a/Tests/MQTTnet.Benchmarks/Program.cs b/Tests/MQTTnet.Benchmarks/Program.cs index b2d19194..760cb52e 100644 --- a/Tests/MQTTnet.Benchmarks/Program.cs +++ b/Tests/MQTTnet.Benchmarks/Program.cs @@ -1,7 +1,7 @@ using System; using BenchmarkDotNet.Running; using MQTTnet.Benchmarks.Configurations; -using MQTTnet.Diagnostics.Runtime; +using MQTTnet.Diagnostics; namespace MQTTnet.Benchmarks { diff --git a/Tests/MQTTnet.Benchmarks/SerializerBenchmark.cs b/Tests/MQTTnet.Benchmarks/SerializerBenchmark.cs index 45ca2f89..0f622c0a 100644 --- a/Tests/MQTTnet.Benchmarks/SerializerBenchmark.cs +++ b/Tests/MQTTnet.Benchmarks/SerializerBenchmark.cs @@ -9,7 +9,7 @@ using MQTTnet.Channel; using MQTTnet.Formatter; using MQTTnet.Formatter.V3; using BenchmarkDotNet.Jobs; -using MQTTnet.Diagnostics.Logger; +using MQTTnet.Diagnostics; namespace MQTTnet.Benchmarks { diff --git a/Tests/MQTTnet.Benchmarks/TopicFilterComparerBenchmark.cs b/Tests/MQTTnet.Benchmarks/TopicFilterComparerBenchmark.cs index 02924f51..443dceae 100644 --- a/Tests/MQTTnet.Benchmarks/TopicFilterComparerBenchmark.cs +++ b/Tests/MQTTnet.Benchmarks/TopicFilterComparerBenchmark.cs @@ -1,7 +1,7 @@ using BenchmarkDotNet.Attributes; using BenchmarkDotNet.Jobs; using System; -using MQTTnet.Server.Internal; +using MQTTnet.Server; namespace MQTTnet.Benchmarks { diff --git a/Tests/MQTTnet.Core.Tests/Client/LowLevelMqttClient_Tests.cs b/Tests/MQTTnet.Core.Tests/Client/LowLevelMqttClient_Tests.cs index 0e222907..f7f0897d 100644 --- a/Tests/MQTTnet.Core.Tests/Client/LowLevelMqttClient_Tests.cs +++ b/Tests/MQTTnet.Core.Tests/Client/LowLevelMqttClient_Tests.cs @@ -1,11 +1,10 @@ using System; -using System.Collections.Generic; using System.Net.Sockets; using System.Text; using System.Threading; using System.Threading.Tasks; using Microsoft.VisualStudio.TestTools.UnitTesting; -using MQTTnet.Client.Options; +using MQTTnet.Client; using MQTTnet.Exceptions; using MQTTnet.LowLevelClient; using MQTTnet.Packets; diff --git a/Tests/MQTTnet.Core.Tests/Client/ManagedMqttClient_Tests.cs b/Tests/MQTTnet.Core.Tests/Client/ManagedMqttClient_Tests.cs index 7d382990..4c06a4ba 100644 --- a/Tests/MQTTnet.Core.Tests/Client/ManagedMqttClient_Tests.cs +++ b/Tests/MQTTnet.Core.Tests/Client/ManagedMqttClient_Tests.cs @@ -5,11 +5,7 @@ using System.Threading; using System.Threading.Tasks; using Microsoft.VisualStudio.TestTools.UnitTesting; using MQTTnet.Client; -using MQTTnet.Client.Connecting; -using MQTTnet.Client.Options; -using MQTTnet.Client.Receiving; using MQTTnet.Diagnostics; -using MQTTnet.Diagnostics.Logger; using MQTTnet.Extensions.ManagedClient; using MQTTnet.Server; using MQTTnet.Tests.Mockups; @@ -73,10 +69,15 @@ namespace MQTTnet.Tests.Client .WithClientOptions(clientOptions) .Build()); - var recievingClient = await testEnvironment.ConnectClient(); - await recievingClient.SubscribeAsync("My/last/will"); - - recievingClient.UseApplicationMessageReceivedHandler(context => Interlocked.Increment(ref receivedMessagesCount)); + var receivingClient = await testEnvironment.ConnectClient(); + + receivingClient.ApplicationMessageReceivedAsync += e => + { + Interlocked.Increment(ref receivedMessagesCount); + return Task.CompletedTask; + }; + + await receivingClient.SubscribeAsync("My/last/will"); dyingManagedClient.Dispose(); @@ -314,10 +315,11 @@ namespace MQTTnet.Tests.Client var receivedManagedMessages = new List(); var managedClient = new ManagedMqttClient(testEnvironment.CreateClient(), new MqttNetEventLogger()); - managedClient.ApplicationMessageReceivedHandler = new MqttApplicationMessageReceivedHandlerDelegate(c => + managedClient.ApplicationMessageReceivedAsync += e => { - receivedManagedMessages.Add(c.ApplicationMessage); - }); + receivedManagedMessages.Add(e.ApplicationMessage); + return Task.CompletedTask; + }; await managedClient.SubscribeAsync("topic"); @@ -399,14 +401,16 @@ namespace MQTTnet.Tests.Client try { var sendClient = await testEnvironment.ConnectClient(options); - sendClient.ApplicationMessageReceivedHandler = new MQTTnet.Client.Receiving.MqttApplicationMessageReceivedHandlerDelegate(e => + sendClient.ApplicationMessageReceivedAsync += e => { onReceive(); - }); + return Task.CompletedTask; + }; + await sendClient.SubscribeAsync("aaa"); return sendClient; } - catch (System.Exception) + catch (Exception) { return null; } @@ -465,15 +469,17 @@ namespace MQTTnet.Tests.Client var receivedMessages = new List(); var result = new TaskCompletionSource>(TaskCreationOptions.RunContinuationsAsynchronously); - managedClient.ApplicationMessageReceivedHandler = new MqttApplicationMessageReceivedHandlerDelegate(r => + managedClient.ApplicationMessageReceivedAsync += e => { - receivedMessages.Add(r.ApplicationMessage); + receivedMessages.Add(e.ApplicationMessage); if (receivedMessages.Count == expectedNumberOfMessages) { result.TrySetResult(receivedMessages); } - }); + + return Task.CompletedTask; + }; return result.Task; } diff --git a/Tests/MQTTnet.Core.Tests/Client/MqttClientOptionsBuilder_Tests.cs b/Tests/MQTTnet.Core.Tests/Client/MqttClientOptionsBuilder_Tests.cs index 56748bb2..c47b6102 100644 --- a/Tests/MQTTnet.Core.Tests/Client/MqttClientOptionsBuilder_Tests.cs +++ b/Tests/MQTTnet.Core.Tests/Client/MqttClientOptionsBuilder_Tests.cs @@ -1,7 +1,7 @@ using System.Linq; using System.Text; using Microsoft.VisualStudio.TestTools.UnitTesting; -using MQTTnet.Client.Options; +using MQTTnet.Client; using MQTTnet.Extensions; namespace MQTTnet.Tests.Client @@ -15,6 +15,7 @@ namespace MQTTnet.Tests.Client var options = new MqttClientOptionsBuilder() .WithConnectionUri("mqtt://user:password@127.0.0.1") .Build(); + Assert.AreEqual("user", options.Credentials.Username); Assert.IsTrue(Encoding.UTF8.GetBytes("password").SequenceEqual(options.Credentials.Password)); } diff --git a/Tests/MQTTnet.Core.Tests/Client/MqttClient_Tests.cs b/Tests/MQTTnet.Core.Tests/Client/MqttClient_Tests.cs index cf459b9b..c55f3384 100644 --- a/Tests/MQTTnet.Core.Tests/Client/MqttClient_Tests.cs +++ b/Tests/MQTTnet.Core.Tests/Client/MqttClient_Tests.cs @@ -7,17 +7,10 @@ using System.Threading; using System.Threading.Tasks; using Microsoft.VisualStudio.TestTools.UnitTesting; using MQTTnet.Client; -using MQTTnet.Client.Connecting; -using MQTTnet.Client.Disconnecting; -using MQTTnet.Client.Options; -using MQTTnet.Client.Publishing; -using MQTTnet.Client.Receiving; -using MQTTnet.Client.Subscribing; using MQTTnet.Exceptions; using MQTTnet.Formatter; using MQTTnet.Packets; using MQTTnet.Protocol; -using MQTTnet.Server; using MQTTnet.Tests.Mockups; namespace MQTTnet.Tests.Client @@ -142,9 +135,9 @@ namespace MQTTnet.Tests.Client var replyReceived = false; - client.UseApplicationMessageReceivedHandler(c => + client.ApplicationMessageReceivedAsync += e => { - if (c.ApplicationMessage.Topic == "request") + if (e.ApplicationMessage.Topic == "request") { #pragma warning disable 4014 Task.Run(() => client.PublishAsync("reply", null, MqttQualityOfServiceLevel.AtLeastOnce)); @@ -154,7 +147,9 @@ namespace MQTTnet.Tests.Client { replyReceived = true; } - }); + + return Task.CompletedTask; + }; await client.PublishAsync("request", null, MqttQualityOfServiceLevel.AtLeastOnce); @@ -178,24 +173,26 @@ namespace MQTTnet.Tests.Client var replyReceived = false; - client1.UseApplicationMessageReceivedHandler(c => + client1.ApplicationMessageReceivedAsync += e => { - if (c.ApplicationMessage.Topic == "reply") + if (e.ApplicationMessage.Topic == "reply") { replyReceived = true; } - }); + + return Task.CompletedTask; + }; - client2.UseApplicationMessageReceivedHandler(async c => + client2.ApplicationMessageReceivedAsync += async e => { - if (c.ApplicationMessage.Topic == "request") + if (e.ApplicationMessage.Topic == "request") { // Use AtMostOnce here because with QoS 1 or even QoS 2 the process waits for // the ACK etc. The problem is that the SpinUntil below only waits until the // flag is set. It does not wait until the client has sent the ACK await client2.PublishAsync("reply", null, MqttQualityOfServiceLevel.AtMostOnce); } - }); + }; await client1.PublishAsync("request", null, MqttQualityOfServiceLevel.AtLeastOnce); @@ -463,7 +460,7 @@ namespace MQTTnet.Tests.Client } } - client1.UseApplicationMessageReceivedHandler(Handler1); + client1.ApplicationMessageReceivedAsync += Handler1; var client2 = await testEnvironment.ConnectClient(); for (var i = MessagesCount; i > 0; i--) @@ -512,7 +509,7 @@ namespace MQTTnet.Tests.Client return Task.CompletedTask; } - client1.UseApplicationMessageReceivedHandler(Handler1); + client1.ApplicationMessageReceivedAsync += Handler1; var client2 = await testEnvironment.ConnectClient(); for (var i = MessagesCount; i > 0; i--) @@ -544,22 +541,24 @@ namespace MQTTnet.Tests.Client await client1.PublishAsync($"reply/{eventArgs.ApplicationMessage.Topic}"); } - client1.UseApplicationMessageReceivedHandler(Handler1); + client1.ApplicationMessageReceivedAsync += Handler1; var client2 = await testEnvironment.ConnectClient(); await client2.SubscribeAsync("reply/#"); var replies = new List(); - void Handler2(MqttApplicationMessageReceivedEventArgs eventArgs) + Task Handler2(MqttApplicationMessageReceivedEventArgs eventArgs) { lock (replies) { replies.Add(eventArgs.ApplicationMessage.Topic); } + + return Task.CompletedTask; } - client2.UseApplicationMessageReceivedHandler((Action)Handler2); + client2.ApplicationMessageReceivedAsync += Handler2; await Task.Delay(500); @@ -583,13 +582,15 @@ namespace MQTTnet.Tests.Client var receivedMessages = new List(); var client1 = await testEnvironment.ConnectClient(); - client1.UseApplicationMessageReceivedHandler(c => + client1.ApplicationMessageReceivedAsync += e => { lock (receivedMessages) { - receivedMessages.Add(c.ApplicationMessage); + receivedMessages.Add(e.ApplicationMessage); } - }); + + return Task.CompletedTask; + }; await client1.SubscribeAsync("a"); @@ -616,10 +617,10 @@ namespace MQTTnet.Tests.Client const string expectedClient2Message = "hello client2"; var client1 = await testEnvironment.ConnectClient(); - client1.UseApplicationMessageReceivedHandler(async c => + client1.ApplicationMessageReceivedAsync += async e => { await client1.PublishAsync(client2Topic, expectedClient2Message, MqttQualityOfServiceLevel.AtLeastOnce); - }); + }; await client1.SubscribeAsync(client1Topic, MqttQualityOfServiceLevel.AtLeastOnce); @@ -627,10 +628,11 @@ namespace MQTTnet.Tests.Client var client2TopicResults = new List(); - client2.UseApplicationMessageReceivedHandler(c => + client2.ApplicationMessageReceivedAsync += e => { - client2TopicResults.Add(Encoding.UTF8.GetString(c.ApplicationMessage.Payload)); - }); + client2TopicResults.Add(Encoding.UTF8.GetString(e.ApplicationMessage.Payload)); + return Task.CompletedTask; + }; await client2.SubscribeAsync(client2Topic); @@ -669,13 +671,15 @@ namespace MQTTnet.Tests.Client await client.PublishAsync(msg.Build()); }); - client.UseApplicationMessageReceivedHandler(c => + client.ApplicationMessageReceivedAsync += e => { lock (receivedMessages) { - receivedMessages.Add(c.ApplicationMessage); + receivedMessages.Add(e.ApplicationMessage); } - }); + + return Task.CompletedTask; + }; await client.ConnectAsync(new MqttClientOptionsBuilder().WithTcpServer("localhost", testEnvironment.ServerPort).Build()); @@ -744,10 +748,11 @@ namespace MQTTnet.Tests.Client var receiveClient = clients[99]; object receivedPayload = null; - receiveClient.UseApplicationMessageReceivedHandler(e => + receiveClient.ApplicationMessageReceivedAsync += e => { receivedPayload = e.ApplicationMessage.ConvertPayloadToString(); - }); + return Task.CompletedTask; + }; await receiveClient.SubscribeAsync("x"); @@ -779,7 +784,11 @@ namespace MQTTnet.Tests.Client }, CancellationToken.None); MqttApplicationMessage receivedMessage = null; - receiver.UseApplicationMessageReceivedHandler(e => receivedMessage = e.ApplicationMessage); + receiver.ApplicationMessageReceivedAsync += e => + { + receivedMessage = e.ApplicationMessage; + return Task.CompletedTask; + }; await sender.PublishAsync(message.Build(), CancellationToken.None); @@ -807,10 +816,11 @@ namespace MQTTnet.Tests.Client }); var messageReceived = false; - client1.ApplicationMessageReceivedHandler = new MqttApplicationMessageReceivedHandlerDelegate(c => + client1.ApplicationMessageReceivedAsync += e => { messageReceived = true; - }); + return Task.CompletedTask; + }; await client1.SubscribeAsync(new MqttTopicFilterBuilder().WithTopic("topic1").WithExactlyOnceQoS().Build()); @@ -843,9 +853,9 @@ namespace MQTTnet.Tests.Client var subscriber = await testEnvironment.ConnectClient(new MqttClientOptionsBuilder().WithClientId(qos.ToString())); await subscriber.SubscribeAsync("#", qos); - subscriber.UseApplicationMessageReceivedHandler(c => + subscriber.ApplicationMessageReceivedAsync += e => { - c.AutoAcknowledge = false; + e.AutoAcknowledge = false; async Task InvokeInternal() { @@ -856,7 +866,7 @@ namespace MQTTnet.Tests.Client _ = InvokeInternal(); return Task.CompletedTask; - }); + }; var publishes = Task.WhenAll( publisher.PublishAsync("a", null, qos), diff --git a/Tests/MQTTnet.Core.Tests/Factory/MqttFactory_Tests.cs b/Tests/MQTTnet.Core.Tests/Factory/MqttFactory_Tests.cs index 45a4d458..e5ef04b6 100644 --- a/Tests/MQTTnet.Core.Tests/Factory/MqttFactory_Tests.cs +++ b/Tests/MQTTnet.Core.Tests/Factory/MqttFactory_Tests.cs @@ -2,7 +2,7 @@ using System.Threading; using System.Threading.Tasks; using Microsoft.VisualStudio.TestTools.UnitTesting; -using MQTTnet.Diagnostics.Logger; +using MQTTnet.Diagnostics; using MQTTnet.Extensions.ManagedClient; using MQTTnet.Server; diff --git a/Tests/MQTTnet.Core.Tests/Logger/Logger_Tests.cs b/Tests/MQTTnet.Core.Tests/Logger/Logger_Tests.cs index ce029aeb..75340826 100644 --- a/Tests/MQTTnet.Core.Tests/Logger/Logger_Tests.cs +++ b/Tests/MQTTnet.Core.Tests/Logger/Logger_Tests.cs @@ -1,6 +1,6 @@ using System; using Microsoft.VisualStudio.TestTools.UnitTesting; -using MQTTnet.Diagnostics.Logger; +using MQTTnet.Diagnostics; namespace MQTTnet.Tests.Logger { diff --git a/Tests/MQTTnet.Core.Tests/Logger/SourceLogger_Tests.cs b/Tests/MQTTnet.Core.Tests/Logger/SourceLogger_Tests.cs index 4b825aa4..8614d9d3 100644 --- a/Tests/MQTTnet.Core.Tests/Logger/SourceLogger_Tests.cs +++ b/Tests/MQTTnet.Core.Tests/Logger/SourceLogger_Tests.cs @@ -1,5 +1,5 @@ using Microsoft.VisualStudio.TestTools.UnitTesting; -using MQTTnet.Diagnostics.Logger; +using MQTTnet.Diagnostics; namespace MQTTnet.Tests.Logger { diff --git a/Tests/MQTTnet.Core.Tests/MQTTv5/Client_Tests.cs b/Tests/MQTTnet.Core.Tests/MQTTv5/Client_Tests.cs index bc30aba5..4b400378 100644 --- a/Tests/MQTTnet.Core.Tests/MQTTv5/Client_Tests.cs +++ b/Tests/MQTTnet.Core.Tests/MQTTv5/Client_Tests.cs @@ -2,13 +2,10 @@ using System.Collections.Generic; using System.Threading.Tasks; using Microsoft.VisualStudio.TestTools.UnitTesting; using MQTTnet.Client; -using MQTTnet.Client.Options; -using MQTTnet.Client.Publishing; -using MQTTnet.Client.Receiving; -using MQTTnet.Client.Subscribing; -using MQTTnet.Client.Unsubscribing; using MQTTnet.Formatter; +using MQTTnet.Packets; using MQTTnet.Protocol; +using MQTTnet.Tests.Mockups; namespace MQTTnet.Tests.MQTTv5 { @@ -37,7 +34,11 @@ namespace MQTTnet.Tests.MQTTv5 MqttApplicationMessage receivedMessage = null; await client.SubscribeAsync("a"); - client.UseApplicationMessageReceivedHandler(context => { receivedMessage = context.ApplicationMessage; }); + client.ApplicationMessageReceivedAsync += e => + { + receivedMessage = e.ApplicationMessage; + return Task.CompletedTask; + }; await client.PublishAsync(new MqttApplicationMessageBuilder() .WithTopic("a") @@ -202,17 +203,10 @@ namespace MQTTnet.Tests.MQTTv5 using (var testEnvironment = CreateTestEnvironment()) { await testEnvironment.StartServer(); - - var receivedMessages = new List(); - + var client1 = await testEnvironment.ConnectClient(o => o.WithProtocolVersion(MqttProtocolVersion.V500).WithClientId("client1")); - client1.ApplicationMessageReceivedHandler = new MqttApplicationMessageReceivedHandlerDelegate(e => - { - lock (receivedMessages) - { - receivedMessages.Add(e); - } - }); + + var testMessageHandler = new TestApplicationMessageReceivedHandler(client1); await client1.SubscribeAsync("a"); @@ -224,10 +218,10 @@ namespace MQTTnet.Tests.MQTTv5 await client2.DisconnectAsync(); await client1.DisconnectAsync(); - Assert.AreEqual(1, receivedMessages.Count); - Assert.AreEqual("Subscribe_And_Publish_client1", receivedMessages[0].ClientId); - Assert.AreEqual("a", receivedMessages[0].ApplicationMessage.Topic); - Assert.AreEqual("b", receivedMessages[0].ApplicationMessage.ConvertPayloadToString()); + Assert.AreEqual(1, testMessageHandler.ReceivedEventArgs.Count); + Assert.AreEqual("Subscribe_And_Publish_client1", testMessageHandler.ReceivedEventArgs[0].ClientId); + Assert.AreEqual("a", testMessageHandler.ReceivedEventArgs[0].ApplicationMessage.Topic); + Assert.AreEqual("b", testMessageHandler.ReceivedEventArgs[0].ApplicationMessage.ConvertPayloadToString()); } } @@ -242,10 +236,11 @@ namespace MQTTnet.Tests.MQTTv5 await receiver.SubscribeAsync("#"); MqttApplicationMessage receivedMessage = null; - receiver.UseApplicationMessageReceivedHandler(c => + receiver.ApplicationMessageReceivedAsync += e => { - receivedMessage = c.ApplicationMessage; - }); + receivedMessage = e.ApplicationMessage; + return Task.CompletedTask; + }; var sender = await testEnvironment.ConnectClient(new MqttClientOptionsBuilder().WithProtocolVersion(MqttProtocolVersion.V500)); diff --git a/Tests/MQTTnet.Core.Tests/MQTTv5/Server_Tests.cs b/Tests/MQTTnet.Core.Tests/MQTTv5/Server_Tests.cs index 18fde518..36824ee2 100644 --- a/Tests/MQTTnet.Core.Tests/MQTTv5/Server_Tests.cs +++ b/Tests/MQTTnet.Core.Tests/MQTTv5/Server_Tests.cs @@ -1,6 +1,5 @@ using Microsoft.VisualStudio.TestTools.UnitTesting; using MQTTnet.Client; -using MQTTnet.Client.Options; using MQTTnet.Formatter; using MQTTnet.Tests.Mockups; using System.Threading; @@ -27,7 +26,13 @@ namespace MQTTnet.Tests.MQTTv5 var clientOptions = new MqttClientOptionsBuilder().WithWillMessage(willMessage).WithProtocolVersion(MqttProtocolVersion.V500); var c1 = await testEnvironment.ConnectClient(new MqttClientOptionsBuilder().WithProtocolVersion(MqttProtocolVersion.V500)); - c1.UseApplicationMessageReceivedHandler(c => Interlocked.Increment(ref receivedMessagesCount)); + + c1.ApplicationMessageReceivedAsync += e => + { + Interlocked.Increment(ref receivedMessagesCount); + return Task.CompletedTask; + }; + await c1.SubscribeAsync(new MqttTopicFilterBuilder().WithTopic("#").Build()); var c2 = await testEnvironment.ConnectClient(clientOptions); diff --git a/Tests/MQTTnet.Core.Tests/Mockups/TestApplicationMessageReceivedHandler.cs b/Tests/MQTTnet.Core.Tests/Mockups/TestApplicationMessageReceivedHandler.cs index eda3cc39..7ca41646 100644 --- a/Tests/MQTTnet.Core.Tests/Mockups/TestApplicationMessageReceivedHandler.cs +++ b/Tests/MQTTnet.Core.Tests/Mockups/TestApplicationMessageReceivedHandler.cs @@ -2,41 +2,46 @@ using System.Linq; using System.Threading.Tasks; using Microsoft.VisualStudio.TestTools.UnitTesting; -using MQTTnet.Client.Receiving; +using MQTTnet.Client; using MQTTnet.Implementations; namespace MQTTnet.Tests.Mockups { - public sealed class TestApplicationMessageReceivedHandler : IMqttApplicationMessageReceivedHandler + public sealed class TestApplicationMessageReceivedHandler { - readonly List _messageReceivedEventArgs = new List(); + readonly List _receivedEventArgs = new List(); - public Task HandleApplicationMessageReceivedAsync(MqttApplicationMessageReceivedEventArgs eventArgs) + public TestApplicationMessageReceivedHandler(IMqttClient mqttClient) { - lock (_messageReceivedEventArgs) + mqttClient.ApplicationMessageReceivedAsync += MqttClientOnApplicationMessageReceivedAsync; + } + + Task MqttClientOnApplicationMessageReceivedAsync(MqttApplicationMessageReceivedEventArgs eventArgs) + { + lock (_receivedEventArgs) { - _messageReceivedEventArgs.Add(eventArgs.ApplicationMessage); + _receivedEventArgs.Add(eventArgs); } return PlatformAbstractionLayer.CompletedTask; } - - public List ReceivedApplicationMessages + + public List ReceivedEventArgs { get { - lock (_messageReceivedEventArgs) + lock (_receivedEventArgs) { - return _messageReceivedEventArgs.ToList(); + return _receivedEventArgs.ToList(); } } } public void AssertReceivedCountEquals(int expectedCount) { - lock (_messageReceivedEventArgs) + lock (_receivedEventArgs) { - Assert.AreEqual(expectedCount, _messageReceivedEventArgs.Count); + Assert.AreEqual(expectedCount, _receivedEventArgs.Count); } } } diff --git a/Tests/MQTTnet.Core.Tests/Mockups/TestClientWrapper.cs b/Tests/MQTTnet.Core.Tests/Mockups/TestClientWrapper.cs index 1da5c719..a7ea3b70 100644 --- a/Tests/MQTTnet.Core.Tests/Mockups/TestClientWrapper.cs +++ b/Tests/MQTTnet.Core.Tests/Mockups/TestClientWrapper.cs @@ -1,14 +1,6 @@ using System; using Microsoft.VisualStudio.TestTools.UnitTesting; using MQTTnet.Client; -using MQTTnet.Client.Connecting; -using MQTTnet.Client.Disconnecting; -using MQTTnet.Client.ExtendedAuthenticationExchange; -using MQTTnet.Client.Options; -using MQTTnet.Client.Publishing; -using MQTTnet.Client.Receiving; -using MQTTnet.Client.Subscribing; -using MQTTnet.Client.Unsubscribing; using System.Threading; using System.Threading.Tasks; @@ -53,13 +45,7 @@ namespace MQTTnet.Tests.Mockups add => Implementation.DisconnectedAsync += value; remove => Implementation.DisconnectedAsync -= value; } - - public IMqttApplicationMessageReceivedHandler ApplicationMessageReceivedHandler - { - get => Implementation.ApplicationMessageReceivedHandler; - set => Implementation.ApplicationMessageReceivedHandler = value; - } - + public event Func ApplicationMessageReceivedAsync { add => Implementation.ApplicationMessageReceivedAsync += value; diff --git a/Tests/MQTTnet.Core.Tests/Mockups/TestEnvironment.cs b/Tests/MQTTnet.Core.Tests/Mockups/TestEnvironment.cs index f2061204..69cb8710 100644 --- a/Tests/MQTTnet.Core.Tests/Mockups/TestEnvironment.cs +++ b/Tests/MQTTnet.Core.Tests/Mockups/TestEnvironment.cs @@ -1,6 +1,5 @@ using Microsoft.VisualStudio.TestTools.UnitTesting; using MQTTnet.Client; -using MQTTnet.Client.Options; using MQTTnet.Server; using System; using System.Collections.Generic; @@ -8,7 +7,7 @@ using System.Diagnostics; using System.Linq; using System.Threading; using System.Threading.Tasks; -using MQTTnet.Diagnostics.Logger; +using MQTTnet.Diagnostics; using MQTTnet.Extensions.Rpc; using MQTTnet.Extensions.Rpc.Options; using MQTTnet.Formatter; @@ -232,17 +231,7 @@ namespace MQTTnet.Tests.Mockups public TestApplicationMessageReceivedHandler CreateApplicationMessageHandler(IMqttClient mqttClient) { - if (mqttClient == null) throw new ArgumentNullException(nameof(mqttClient)); - - var handler = new TestApplicationMessageReceivedHandler(); - if (mqttClient.ApplicationMessageReceivedHandler != null) - { - throw new InvalidOperationException("ApplicationMessageReceivedHandler is already set."); - } - - mqttClient.ApplicationMessageReceivedHandler = handler; - - return handler; + return new TestApplicationMessageReceivedHandler(mqttClient); } public void ThrowIfLogErrors() diff --git a/Tests/MQTTnet.Core.Tests/Mockups/TestLogger.cs b/Tests/MQTTnet.Core.Tests/Mockups/TestLogger.cs index 75e958c4..f13e49f0 100644 --- a/Tests/MQTTnet.Core.Tests/Mockups/TestLogger.cs +++ b/Tests/MQTTnet.Core.Tests/Mockups/TestLogger.cs @@ -1,5 +1,5 @@ using System; -using MQTTnet.Diagnostics.Logger; +using MQTTnet.Diagnostics; namespace MQTTnet.Tests.Mockups { diff --git a/Tests/MQTTnet.Core.Tests/Mockups/TestMqttCommunicationAdapterFactory.cs b/Tests/MQTTnet.Core.Tests/Mockups/TestMqttCommunicationAdapterFactory.cs index 371090c7..7f2b10b5 100644 --- a/Tests/MQTTnet.Core.Tests/Mockups/TestMqttCommunicationAdapterFactory.cs +++ b/Tests/MQTTnet.Core.Tests/Mockups/TestMqttCommunicationAdapterFactory.cs @@ -1,5 +1,6 @@ using MQTTnet.Adapter; -using MQTTnet.Client.Options; +using MQTTnet.Client; +using MQTTnet.Diagnostics; namespace MQTTnet.Tests.Mockups { @@ -12,7 +13,7 @@ namespace MQTTnet.Tests.Mockups _adapter = adapter; } - public IMqttChannelAdapter CreateClientAdapter(IMqttClientOptions options) + public IMqttChannelAdapter CreateClientAdapter(IMqttClientOptions options, IMqttNetLogger logger) { return _adapter; } diff --git a/Tests/MQTTnet.Core.Tests/MqttPacketSerializer_Tests.cs b/Tests/MQTTnet.Core.Tests/MqttPacketSerializer_Tests.cs index a89aa00d..11c27552 100644 --- a/Tests/MQTTnet.Core.Tests/MqttPacketSerializer_Tests.cs +++ b/Tests/MQTTnet.Core.Tests/MqttPacketSerializer_Tests.cs @@ -5,7 +5,7 @@ using System.Text; using System.Threading; using Microsoft.VisualStudio.TestTools.UnitTesting; using MQTTnet.Adapter; -using MQTTnet.Diagnostics.Logger; +using MQTTnet.Diagnostics; using MQTTnet.Exceptions; using MQTTnet.Formatter; using MQTTnet.Formatter.V3; diff --git a/Tests/MQTTnet.Core.Tests/RPC_Tests.cs b/Tests/MQTTnet.Core.Tests/RPC_Tests.cs index 1d472b6d..2a14fb09 100644 --- a/Tests/MQTTnet.Core.Tests/RPC_Tests.cs +++ b/Tests/MQTTnet.Core.Tests/RPC_Tests.cs @@ -4,11 +4,9 @@ using System.Threading.Tasks; using Microsoft.VisualStudio.TestTools.UnitTesting; using MQTTnet.Tests.Mockups; using MQTTnet.Client; -using MQTTnet.Client.Receiving; using MQTTnet.Exceptions; using MQTTnet.Extensions.Rpc; using MQTTnet.Protocol; -using MQTTnet.Client.Options; using MQTTnet.Formatter; using MQTTnet.Extensions.Rpc.Options; using MQTTnet.Extensions.Rpc.Options.TopicGeneration; @@ -95,10 +93,7 @@ namespace MQTTnet.Tests var responseSender = await testEnvironment.ConnectClient(new MqttClientOptionsBuilder().WithProtocolVersion(protocolVersion)); await responseSender.SubscribeAsync("MQTTnet.RPC/+/ping", qosLevel); - responseSender.ApplicationMessageReceivedHandler = new MqttApplicationMessageReceivedHandlerDelegate(async e => - { - await responseSender.PublishAsync(e.ApplicationMessage.Topic + "/response", "pong"); - }); + responseSender.ApplicationMessageReceivedAsync += e => responseSender.PublishAsync(e.ApplicationMessage.Topic + "/response", "pong"); var requestSender = await testEnvironment.ConnectClient(); diff --git a/Tests/MQTTnet.Core.Tests/RoundtripTime_Tests.cs b/Tests/MQTTnet.Core.Tests/RoundtripTime_Tests.cs index a790c543..a17cf58b 100644 --- a/Tests/MQTTnet.Core.Tests/RoundtripTime_Tests.cs +++ b/Tests/MQTTnet.Core.Tests/RoundtripTime_Tests.cs @@ -26,10 +26,11 @@ namespace MQTTnet.Tests TaskCompletionSource response = null; - receiverClient.UseApplicationMessageReceivedHandler(e => + receiverClient.ApplicationMessageReceivedAsync += e => { response?.SetResult(e.ApplicationMessage.ConvertPayloadToString()); - }); + return Task.CompletedTask; + }; var times = new List(); var stopwatch = Stopwatch.StartNew(); diff --git a/Tests/MQTTnet.Core.Tests/Server/Assigned_Client_ID_Tests.cs b/Tests/MQTTnet.Core.Tests/Server/Assigned_Client_ID_Tests.cs index 6d0f7422..1e31a7de 100644 --- a/Tests/MQTTnet.Core.Tests/Server/Assigned_Client_ID_Tests.cs +++ b/Tests/MQTTnet.Core.Tests/Server/Assigned_Client_ID_Tests.cs @@ -2,7 +2,6 @@ using System.Threading.Tasks; using Microsoft.VisualStudio.TestTools.UnitTesting; using MQTTnet.Client; -using MQTTnet.Client.Options; using MQTTnet.Formatter; using MQTTnet.Protocol; diff --git a/Tests/MQTTnet.Core.Tests/Server/Events_Tests.cs b/Tests/MQTTnet.Core.Tests/Server/Events_Tests.cs index c5032d43..95a917dc 100644 --- a/Tests/MQTTnet.Core.Tests/Server/Events_Tests.cs +++ b/Tests/MQTTnet.Core.Tests/Server/Events_Tests.cs @@ -2,7 +2,6 @@ using System.Threading.Tasks; using Microsoft.VisualStudio.TestTools.UnitTesting; using MQTTnet.Client; -using MQTTnet.Client.Receiving; using MQTTnet.Formatter; using MQTTnet.Protocol; using MQTTnet.Server; diff --git a/Tests/MQTTnet.Core.Tests/Server/General.cs b/Tests/MQTTnet.Core.Tests/Server/General.cs index 88b300e6..87b906fb 100644 --- a/Tests/MQTTnet.Core.Tests/Server/General.cs +++ b/Tests/MQTTnet.Core.Tests/Server/General.cs @@ -7,11 +7,8 @@ using System.Threading.Tasks; using Microsoft.VisualStudio.TestTools.UnitTesting; using MQTTnet.Adapter; using MQTTnet.Client; -using MQTTnet.Client.Connecting; -using MQTTnet.Client.Disconnecting; -using MQTTnet.Client.Options; -using MQTTnet.Client.Receiving; using MQTTnet.Formatter; +using MQTTnet.Packets; using MQTTnet.Protocol; using MQTTnet.Server; using MQTTnet.Tests.Mockups; @@ -127,7 +124,13 @@ namespace MQTTnet.Tests.Server var clientOptions = new MqttClientOptionsBuilder().WithWillMessage(willMessage); var c1 = await testEnvironment.ConnectClient(); - c1.ApplicationMessageReceivedHandler = new MqttApplicationMessageReceivedHandlerDelegate(c => Interlocked.Increment(ref receivedMessagesCount)); + + c1.ApplicationMessageReceivedAsync += e => + { + Interlocked.Increment(ref receivedMessagesCount); + return Task.CompletedTask; + }; + await c1.SubscribeAsync(new MqttTopicFilterBuilder().WithTopic("#").Build()); var c2 = await testEnvironment.ConnectClient(clientOptions); @@ -150,7 +153,12 @@ namespace MQTTnet.Tests.Server // C1 will receive the last will! var c1 = await testEnvironment.ConnectClient(); - c1.ApplicationMessageReceivedHandler = new MqttApplicationMessageReceivedHandlerDelegate(c => Interlocked.Increment(ref receivedMessagesCount)); + c1.ApplicationMessageReceivedAsync += e => + { + Interlocked.Increment(ref receivedMessagesCount); + return Task.CompletedTask; + }; + await c1.SubscribeAsync(new MqttTopicFilterBuilder().WithTopic("#").Build()); // C2 has the last will defined. @@ -176,8 +184,6 @@ namespace MQTTnet.Tests.Server { using (var testEnvironment = CreateTestEnvironment()) { - var receivedMessagesCount = 0; - await testEnvironment.StartServer(); var willMessage = new MqttApplicationMessageBuilder().WithTopic("My/last/will").WithAtMostOnceQoS().Build(); @@ -185,9 +191,19 @@ namespace MQTTnet.Tests.Server var clientOptions = new MqttClientOptionsBuilder().WithWillMessage(willMessage); var c1 = await testEnvironment.ConnectClient(); - c1.UseApplicationMessageReceivedHandler(c => Interlocked.Increment(ref receivedMessagesCount)); + + var receivedMessagesCount = 0; + c1.ApplicationMessageReceivedAsync += e => + { + Interlocked.Increment(ref receivedMessagesCount); + return Task.CompletedTask; + }; + await c1.SubscribeAsync(new MqttTopicFilterBuilder().WithTopic("#").Build()); + // clientOptions.WithClientId("Client2"); + // var c2 = await testEnvironment.ConnectClient(clientOptions); + var c2 = await testEnvironment.ConnectClient(clientOptions); c2.Dispose(); // Dispose will not send a DISCONNECT pattern first so the will message must be sent. @@ -207,7 +223,11 @@ namespace MQTTnet.Tests.Server var receivedMessagesCount = 0; var client = await testEnvironment.ConnectClient(); - client.UseApplicationMessageReceivedHandler(c => Interlocked.Increment(ref receivedMessagesCount)); + client.ApplicationMessageReceivedAsync += e => + { + Interlocked.Increment(ref receivedMessagesCount); + return Task.CompletedTask; + }; var message = new MqttApplicationMessageBuilder().WithTopic("a").WithAtLeastOnceQoS().Build(); await client.SubscribeAsync(new MqttTopicFilter {Topic = "a", QualityOfServiceLevel = MqttQualityOfServiceLevel.AtLeastOnce}); @@ -233,9 +253,17 @@ namespace MQTTnet.Tests.Server var c2 = await testEnvironment.ConnectClient(); var c3 = await testEnvironment.ConnectClient(); - c2.UseApplicationMessageReceivedHandler(c => { Interlocked.Increment(ref receivedMessagesCount); }); + c2.ApplicationMessageReceivedAsync += e => + { + Interlocked.Increment(ref receivedMessagesCount); + return Task.CompletedTask; + }; - c3.UseApplicationMessageReceivedHandler(c => { Interlocked.Increment(ref receivedMessagesCount); }); + c3.ApplicationMessageReceivedAsync += e => + { + Interlocked.Increment(ref receivedMessagesCount); + return Task.CompletedTask; + }; await c2.SubscribeAsync(new MqttTopicFilter {Topic = "a", QualityOfServiceLevel = MqttQualityOfServiceLevel.AtLeastOnce}).ConfigureAwait(false); await c3.SubscribeAsync(new MqttTopicFilter {Topic = "a", QualityOfServiceLevel = MqttQualityOfServiceLevel.AtLeastOnce}).ConfigureAwait(false); @@ -293,13 +321,15 @@ namespace MQTTnet.Tests.Server client.ConnectedHandler = new MqttClientConnectedHandlerDelegate(async e => { await client.PublishAsync("Connected"); }); - client.UseApplicationMessageReceivedHandler(c => + client.ApplicationMessageReceivedAsync += e => { lock (receivedMessages) { - receivedMessages.Add(c.ApplicationMessage); + receivedMessages.Add(e.ApplicationMessage); } - }); + + return Task.CompletedTask; + }; await Task.Delay(500); @@ -327,13 +357,15 @@ namespace MQTTnet.Tests.Server var client = await testEnvironment.ConnectClient(); var receivedMessages = new List(); - client.UseApplicationMessageReceivedHandler(c => + client.ApplicationMessageReceivedAsync += e => { lock (receivedMessages) { - receivedMessages.Add(c.ApplicationMessage); + receivedMessages.Add(e.ApplicationMessage); } - }); + + return Task.CompletedTask; + }; await Task.Delay(500); @@ -511,7 +543,12 @@ namespace MQTTnet.Tests.Server string receivedTopic = null; var c1 = await testEnvironment.ConnectClient(); await c1.SubscribeAsync("#"); - c1.UseApplicationMessageReceivedHandler(a => { receivedTopic = a.ApplicationMessage.Topic; }); + + c1.ApplicationMessageReceivedAsync += a => + { + receivedTopic = a.ApplicationMessage.Topic; + return Task.CompletedTask; + }; await c1.PublishAsync(new MqttApplicationMessageBuilder().WithTopic("original_topic").Build()); @@ -558,7 +595,12 @@ namespace MQTTnet.Tests.Server string receivedTopic = null; var c1 = await testEnvironment.ConnectClient(); - c1.UseApplicationMessageReceivedHandler(e => { receivedTopic = e.ApplicationMessage.Topic; }); + c1.ApplicationMessageReceivedAsync += e => + { + receivedTopic = e.ApplicationMessage.Topic; + return Task.CompletedTask; + }; + await c1.SubscribeAsync("#"); await testEnvironment.ConnectClient(); @@ -589,10 +631,12 @@ namespace MQTTnet.Tests.Server await c2.SubscribeAsync(new MqttTopicFilterBuilder().WithTopic("test").Build()); var isIntercepted = false; - c2.UseApplicationMessageReceivedHandler(c => + c2.ApplicationMessageReceivedAsync += e => { - isIntercepted = string.Compare("extended", Encoding.UTF8.GetString(c.ApplicationMessage.Payload), StringComparison.Ordinal) == 0; - }); + isIntercepted = string.Compare("extended", Encoding.UTF8.GetString(e.ApplicationMessage.Payload), StringComparison.Ordinal) == 0; + + return Task.CompletedTask; + }; await c1.PublishAsync(new MqttApplicationMessageBuilder().WithTopic("test").Build()); await c1.DisconnectAsync(); @@ -631,7 +675,11 @@ namespace MQTTnet.Tests.Server await testEnvironment.StartServer(); var client1 = await testEnvironment.ConnectClient(); - client1.UseApplicationMessageReceivedHandler(c => { receivedBody = c.ApplicationMessage.Payload; }); + client1.ApplicationMessageReceivedAsync += e => + { + receivedBody = e.ApplicationMessage.Payload; + return Task.CompletedTask; + }; await client1.SubscribeAsync("string"); @@ -732,13 +780,15 @@ namespace MQTTnet.Tests.Server }); - c1.UseApplicationMessageReceivedHandler(_ => + c1.ApplicationMessageReceivedAsync += e => { lock (events) { events.Add("r"); } - }); + + return Task.CompletedTask; + }; c1.SubscribeAsync("topic").Wait(); @@ -825,13 +875,15 @@ namespace MQTTnet.Tests.Server Assert.AreEqual("cdc", flow); - c2.UseApplicationMessageReceivedHandler(_ => + c2.ApplicationMessageReceivedAsync += e => { lock (events) { events.Add("r"); } - }); + + return Task.CompletedTask; + }; await c2.SubscribeAsync("topic"); @@ -941,13 +993,15 @@ namespace MQTTnet.Tests.Server var buffer = new StringBuilder(); - client2.UseApplicationMessageReceivedHandler(c => + client2.ApplicationMessageReceivedAsync += e => { lock (buffer) { - buffer.Append(c.ApplicationMessage.Topic); + buffer.Append(e.ApplicationMessage.Topic); } - }); + + return Task.CompletedTask; + }; await client2.SubscribeAsync(new MqttTopicFilter {Topic = "y"}, new MqttTopicFilter {Topic = "n"}); @@ -1016,7 +1070,7 @@ namespace MQTTnet.Tests.Server await c1.UnsubscribeAsync(topicFilter); await Task.Delay(500); - Assert.AreEqual(expectedReceivedMessagesCount, c1MessageHandler.ReceivedApplicationMessages.Count); + Assert.AreEqual(expectedReceivedMessagesCount, c1MessageHandler.ReceivedEventArgs.Count); } } diff --git a/Tests/MQTTnet.Core.Tests/Server/MqttSubscriptionsManager_Tests.cs b/Tests/MQTTnet.Core.Tests/Server/MqttSubscriptionsManager_Tests.cs index 72b085f5..05ba4f2a 100644 --- a/Tests/MQTTnet.Core.Tests/Server/MqttSubscriptionsManager_Tests.cs +++ b/Tests/MQTTnet.Core.Tests/Server/MqttSubscriptionsManager_Tests.cs @@ -5,7 +5,6 @@ using Microsoft.VisualStudio.TestTools.UnitTesting; using MQTTnet.Packets; using MQTTnet.Protocol; using MQTTnet.Server; -using MQTTnet.Server.Internal; using MQTTnet.Tests.Mockups; namespace MQTTnet.Tests.Server @@ -18,7 +17,7 @@ namespace MQTTnet.Tests.Server { var s = CreateSession(); - var sm = new MqttClientSubscriptionsManager(s, new MqttServerOptions(), new MqttServerEventContainer(new TestLogger()), new MqttRetainedMessagesManager()); + var sm = new MqttClientSubscriptionsManager(s, new MqttServerOptions(), new MqttServerEventContainer(), new MqttRetainedMessagesManager()); var sp = new MqttSubscribePacket(); sp.TopicFilters.Add(new MqttTopicFilterBuilder().WithTopic("A/B/C").Build()); @@ -35,7 +34,7 @@ namespace MQTTnet.Tests.Server { var s = CreateSession(); - var sm = new MqttClientSubscriptionsManager(s, new MqttServerOptions(), new MqttServerEventContainer(new TestLogger()), new MqttRetainedMessagesManager()); + var sm = new MqttClientSubscriptionsManager(s, new MqttServerOptions(), new MqttServerEventContainer(), new MqttRetainedMessagesManager()); var sp = new MqttSubscribePacket(); sp.TopicFilters.Add(new MqttTopicFilter { Topic = "A/B/C", QualityOfServiceLevel = MqttQualityOfServiceLevel.AtMostOnce }); @@ -52,7 +51,7 @@ namespace MQTTnet.Tests.Server { var s = CreateSession(); - var sm = new MqttClientSubscriptionsManager(s, new MqttServerOptions(), new MqttServerEventContainer(new TestLogger()), new MqttRetainedMessagesManager()); + var sm = new MqttClientSubscriptionsManager(s, new MqttServerOptions(), new MqttServerEventContainer(), new MqttRetainedMessagesManager()); var sp = new MqttSubscribePacket(); sp.TopicFilters.Add(new MqttTopicFilter { Topic = "#", QualityOfServiceLevel = MqttQualityOfServiceLevel.AtMostOnce }); @@ -70,7 +69,7 @@ namespace MQTTnet.Tests.Server { var s = CreateSession(); - var sm = new MqttClientSubscriptionsManager(s, new MqttServerOptions(), new MqttServerEventContainer(new TestLogger()), new MqttRetainedMessagesManager()); + var sm = new MqttClientSubscriptionsManager(s, new MqttServerOptions(), new MqttServerEventContainer(), new MqttRetainedMessagesManager()); var sp = new MqttSubscribePacket(); sp.TopicFilters.Add(new MqttTopicFilterBuilder().WithTopic("A/B/C").Build()); @@ -85,7 +84,7 @@ namespace MQTTnet.Tests.Server { var s = CreateSession(); - var sm = new MqttClientSubscriptionsManager(s, new MqttServerOptions(), new MqttServerEventContainer(new TestLogger()), new MqttRetainedMessagesManager()); + var sm = new MqttClientSubscriptionsManager(s, new MqttServerOptions(), new MqttServerEventContainer(), new MqttRetainedMessagesManager()); var sp = new MqttSubscribePacket(); sp.TopicFilters.Add(new MqttTopicFilterBuilder().WithTopic("A/B/C").Build()); @@ -106,7 +105,7 @@ namespace MQTTnet.Tests.Server var logger = new TestLogger(); var options = new MqttServerOptions(); var retainedMessagesManager = new MqttRetainedMessagesManager(); - var eventContainer = new MqttServerEventContainer(logger); + var eventContainer = new MqttServerEventContainer(); return new MqttClientSession( "", diff --git a/Tests/MQTTnet.Core.Tests/Server/Retain_As_Published_Tests.cs b/Tests/MQTTnet.Core.Tests/Server/Retain_As_Published_Tests.cs index f65557f0..4319d867 100644 --- a/Tests/MQTTnet.Core.Tests/Server/Retain_As_Published_Tests.cs +++ b/Tests/MQTTnet.Core.Tests/Server/Retain_As_Published_Tests.cs @@ -37,7 +37,7 @@ namespace MQTTnet.Tests.Server await LongTestDelay(); applicationMessageHandler.AssertReceivedCountEquals(1); - Assert.AreEqual(retainAsPublished, applicationMessageHandler.ReceivedApplicationMessages[0].Retain); + Assert.AreEqual(retainAsPublished, applicationMessageHandler.ReceivedEventArgs[0].ApplicationMessage.Retain); } } } diff --git a/Tests/MQTTnet.Core.Tests/Server/Retained_Messages_Tests.cs b/Tests/MQTTnet.Core.Tests/Server/Retained_Messages_Tests.cs index d9ea9d2b..68c143c0 100644 --- a/Tests/MQTTnet.Core.Tests/Server/Retained_Messages_Tests.cs +++ b/Tests/MQTTnet.Core.Tests/Server/Retained_Messages_Tests.cs @@ -3,6 +3,7 @@ using System.Threading.Tasks; using Microsoft.VisualStudio.TestTools.UnitTesting; using MQTTnet.Client; using MQTTnet.Formatter; +using MQTTnet.Packets; using MQTTnet.Protocol; namespace MQTTnet.Tests.Server @@ -18,6 +19,7 @@ namespace MQTTnet.Tests.Server await testEnvironment.StartServer(); var client = testEnvironment.CreateClient(); + var connectResult = await client.ConnectAsync(testEnvironment.Factory.CreateClientOptionsBuilder() .WithProtocolVersion(MqttProtocolVersion.V311) .WithTcpServer("127.0.0.1", testEnvironment.ServerPort).Build()); @@ -114,7 +116,7 @@ namespace MQTTnet.Tests.Server await Task.Delay(500); messageHandler.AssertReceivedCountEquals(1); - Assert.IsTrue(messageHandler.ReceivedApplicationMessages.First().Retain); + Assert.IsTrue(messageHandler.ReceivedEventArgs.First().ApplicationMessage.Retain); } } diff --git a/Tests/MQTTnet.Core.Tests/Server/Security_Tests.cs b/Tests/MQTTnet.Core.Tests/Server/Security_Tests.cs index 958fc24f..ebe3c8b9 100644 --- a/Tests/MQTTnet.Core.Tests/Server/Security_Tests.cs +++ b/Tests/MQTTnet.Core.Tests/Server/Security_Tests.cs @@ -2,8 +2,6 @@ using Microsoft.VisualStudio.TestTools.UnitTesting; using MQTTnet.Adapter; using MQTTnet.Client; -using MQTTnet.Client.Connecting; -using MQTTnet.Client.Options; using MQTTnet.Exceptions; using MQTTnet.Protocol; diff --git a/Tests/MQTTnet.Core.Tests/Server/Server_Reference_Tests.cs b/Tests/MQTTnet.Core.Tests/Server/Server_Reference_Tests.cs index 2e2aaf1b..7419242e 100644 --- a/Tests/MQTTnet.Core.Tests/Server/Server_Reference_Tests.cs +++ b/Tests/MQTTnet.Core.Tests/Server/Server_Reference_Tests.cs @@ -2,8 +2,6 @@ using Microsoft.VisualStudio.TestTools.UnitTesting; using MQTTnet.Adapter; using MQTTnet.Client; -using MQTTnet.Client.Connecting; -using MQTTnet.Client.Options; using MQTTnet.Formatter; using MQTTnet.Protocol; diff --git a/Tests/MQTTnet.Core.Tests/Server/Session_Tests.cs b/Tests/MQTTnet.Core.Tests/Server/Session_Tests.cs index ad24c4be..45d9e066 100644 --- a/Tests/MQTTnet.Core.Tests/Server/Session_Tests.cs +++ b/Tests/MQTTnet.Core.Tests/Server/Session_Tests.cs @@ -4,9 +4,6 @@ using System.Text; using System.Threading.Tasks; using Microsoft.VisualStudio.TestTools.UnitTesting; using MQTTnet.Client; -using MQTTnet.Client.Options; -using MQTTnet.Client.Publishing; -using MQTTnet.Client.Subscribing; using MQTTnet.Protocol; using MQTTnet.Server; using MQTTnet.Tests.Mockups; @@ -57,10 +54,11 @@ namespace MQTTnet.Tests.Server string receivedPayload = null; var client = await testEnvironment.ConnectClient(); - client.UseApplicationMessageReceivedHandler(delegate(MqttApplicationMessageReceivedEventArgs args) + client.ApplicationMessageReceivedAsync += e => { - receivedPayload = args.ApplicationMessage.ConvertPayloadToString(); - }); + receivedPayload = e.ApplicationMessage.ConvertPayloadToString(); + return Task.CompletedTask; + }; var subscribeResult = await client.SubscribeAsync("x"); @@ -170,8 +168,8 @@ namespace MQTTnet.Tests.Server await LongTestDelay(); // Assert - Assert.AreEqual(1, messageReceivedHandler.ReceivedApplicationMessages.Count); - Assert.AreEqual("injected_one", messageReceivedHandler.ReceivedApplicationMessages[0].Topic); + Assert.AreEqual(1, messageReceivedHandler.ReceivedEventArgs.Count); + Assert.AreEqual("injected_one", messageReceivedHandler.ReceivedEventArgs[0].ApplicationMessage.Topic); } } @@ -191,13 +189,13 @@ namespace MQTTnet.Tests.Server .WithClientId(qos.ToString()) .WithCleanSession(false)); - subscriber.UseApplicationMessageReceivedHandler(c => + subscriber.ApplicationMessageReceivedAsync += c => { c.AutoAcknowledge = false; ++count; Console.WriteLine("process"); return Task.CompletedTask; - }); + }; await subscriber.SubscribeAsync("#", qos); diff --git a/Tests/MQTTnet.Core.Tests/Server/Shared_Subscriptions_Tests.cs b/Tests/MQTTnet.Core.Tests/Server/Shared_Subscriptions_Tests.cs index 0c615531..b910a8cd 100644 --- a/Tests/MQTTnet.Core.Tests/Server/Shared_Subscriptions_Tests.cs +++ b/Tests/MQTTnet.Core.Tests/Server/Shared_Subscriptions_Tests.cs @@ -1,7 +1,6 @@ using System.Threading.Tasks; using Microsoft.VisualStudio.TestTools.UnitTesting; using MQTTnet.Client; -using MQTTnet.Client.Subscribing; using MQTTnet.Formatter; namespace MQTTnet.Tests.Server diff --git a/Tests/MQTTnet.Core.Tests/Server/Status_Tests.cs b/Tests/MQTTnet.Core.Tests/Server/Status_Tests.cs index c3f9f389..49f5a9cb 100644 --- a/Tests/MQTTnet.Core.Tests/Server/Status_Tests.cs +++ b/Tests/MQTTnet.Core.Tests/Server/Status_Tests.cs @@ -2,7 +2,6 @@ using System.Threading.Tasks; using Microsoft.VisualStudio.TestTools.UnitTesting; using MQTTnet.Client; -using MQTTnet.Client.Options; using MQTTnet.Protocol; using MQTTnet.Server; using MQTTnet.Tests.Mockups; @@ -141,7 +140,8 @@ namespace MQTTnet.Tests.Server // At most once will send one packet to the client and the server will reply // with an additional ACK packet. await c1.PublishAsync("a", string.Empty, MqttQualityOfServiceLevel.AtLeastOnce); - await Task.Delay(250); + + await Task.Delay(500); var clientStatus = await server.GetClientStatusAsync(); @@ -150,8 +150,8 @@ namespace MQTTnet.Tests.Server // + 1 because CONNECT is also counted. Assert.AreEqual(i + 1, clientStatus.First().SentPacketsCount, "SPC invalid!"); - // +1 because ConnACK package is already counted. - Assert.AreEqual(i + 1, clientStatus.First().ReceivedPacketsCount, "RPC invalid!"); + // +2 because ConnACK + PubAck package is already counted. + Assert.AreEqual(i + 2, clientStatus.First().ReceivedPacketsCount, "RPC invalid!"); } } } diff --git a/Tests/MQTTnet.Core.Tests/Server/Subscribe_Tests.cs b/Tests/MQTTnet.Core.Tests/Server/Subscribe_Tests.cs index cb1385ee..806b52c8 100644 --- a/Tests/MQTTnet.Core.Tests/Server/Subscribe_Tests.cs +++ b/Tests/MQTTnet.Core.Tests/Server/Subscribe_Tests.cs @@ -3,9 +3,8 @@ using System.Threading; using System.Threading.Tasks; using Microsoft.VisualStudio.TestTools.UnitTesting; using MQTTnet.Client; -using MQTTnet.Client.Options; -using MQTTnet.Client.Subscribing; using MQTTnet.Formatter; +using MQTTnet.Packets; using MQTTnet.Protocol; using MQTTnet.Server; @@ -33,17 +32,19 @@ namespace MQTTnet.Tests.Server var topicBReceived = false; var client = await testEnvironment.ConnectClient(); - client.UseApplicationMessageReceivedHandler(c => + client.ApplicationMessageReceivedAsync += e => { - if (c.ApplicationMessage.Topic == "a") + if (e.ApplicationMessage.Topic == "a") { topicAReceived = true; } - else if (c.ApplicationMessage.Topic == "b") + else if (e.ApplicationMessage.Topic == "b") { topicBReceived = true; } - }); + + return Task.CompletedTask; + }; await client.SubscribeAsync("b"); @@ -66,7 +67,11 @@ namespace MQTTnet.Tests.Server var server = await testEnvironment.StartServer(); var c1 = await testEnvironment.ConnectClient(new MqttClientOptionsBuilder().WithClientId("c1")); - c1.UseApplicationMessageReceivedHandler(c => Interlocked.Increment(ref receivedMessagesCount)); + c1.ApplicationMessageReceivedAsync += e => + { + Interlocked.Increment(ref receivedMessagesCount); + return Task.CompletedTask; + }; var c2 = await testEnvironment.ConnectClient(new MqttClientOptionsBuilder().WithClientId("c2")); @@ -122,7 +127,12 @@ namespace MQTTnet.Tests.Server await testEnvironment.StartServer(); var c1 = await testEnvironment.ConnectClient(); - c1.UseApplicationMessageReceivedHandler(c => Interlocked.Increment(ref receivedMessagesCount)); + c1.ApplicationMessageReceivedAsync += e => + { + Interlocked.Increment(ref receivedMessagesCount); + return Task.CompletedTask; + }; + await c1.SubscribeAsync(new MqttClientSubscribeOptionsBuilder() .WithTopicFilter("a") .WithTopicFilter("b") @@ -155,7 +165,11 @@ namespace MQTTnet.Tests.Server await testEnvironment.StartServer(); var c1 = await testEnvironment.ConnectClient(); - c1.UseApplicationMessageReceivedHandler(c => Interlocked.Increment(ref receivedMessagesCount)); + c1.ApplicationMessageReceivedAsync += e => + { + Interlocked.Increment(ref receivedMessagesCount); + return Task.CompletedTask; + }; var optionsBuilder = new MqttClientSubscribeOptionsBuilder(); for (var i = 0; i < 500; i++) @@ -191,7 +205,11 @@ namespace MQTTnet.Tests.Server await testEnvironment.StartServer(); var c1 = await testEnvironment.ConnectClient(); - c1.UseApplicationMessageReceivedHandler(c => Interlocked.Increment(ref receivedMessagesCount)); + c1.ApplicationMessageReceivedAsync += e => + { + Interlocked.Increment(ref receivedMessagesCount); + return Task.CompletedTask; + }; for (var i = 0; i < 500; i++) { @@ -231,7 +249,12 @@ namespace MQTTnet.Tests.Server await testEnvironment.StartServer(); var c1 = await testEnvironment.ConnectClient(); - c1.UseApplicationMessageReceivedHandler(c => Interlocked.Increment(ref receivedMessagesCount)); + c1.ApplicationMessageReceivedAsync += e => + { + Interlocked.Increment(ref receivedMessagesCount); + return Task.CompletedTask; + }; + await c1.SubscribeAsync(new MqttClientSubscribeOptionsBuilder() .WithTopicFilter("a") .Build()); diff --git a/Tests/MQTTnet.Core.Tests/Server/Subscription_Identifier_Tests.cs b/Tests/MQTTnet.Core.Tests/Server/Subscription_Identifier_Tests.cs index c69202a0..1df863d7 100644 --- a/Tests/MQTTnet.Core.Tests/Server/Subscription_Identifier_Tests.cs +++ b/Tests/MQTTnet.Core.Tests/Server/Subscription_Identifier_Tests.cs @@ -47,7 +47,7 @@ namespace MQTTnet.Tests.Server applicationMessageHandler.AssertReceivedCountEquals(1); - applicationMessageHandler.ReceivedApplicationMessages[0].SubscriptionIdentifiers.Contains(456); + applicationMessageHandler.ReceivedEventArgs[0].ApplicationMessage.SubscriptionIdentifiers.Contains(456); } } @@ -81,8 +81,8 @@ namespace MQTTnet.Tests.Server applicationMessageHandler.AssertReceivedCountEquals(1); - applicationMessageHandler.ReceivedApplicationMessages[0].SubscriptionIdentifiers.Contains(456); - applicationMessageHandler.ReceivedApplicationMessages[0].SubscriptionIdentifiers.Contains(789); + applicationMessageHandler.ReceivedEventArgs[0].ApplicationMessage.SubscriptionIdentifiers.Contains(456); + applicationMessageHandler.ReceivedEventArgs[0].ApplicationMessage.SubscriptionIdentifiers.Contains(789); } } } diff --git a/Tests/MQTTnet.Core.Tests/Server/TopicFilterComparer_Tests.cs b/Tests/MQTTnet.Core.Tests/Server/TopicFilterComparer_Tests.cs index 93678df6..198e3fc9 100644 --- a/Tests/MQTTnet.Core.Tests/Server/TopicFilterComparer_Tests.cs +++ b/Tests/MQTTnet.Core.Tests/Server/TopicFilterComparer_Tests.cs @@ -1,5 +1,5 @@ using Microsoft.VisualStudio.TestTools.UnitTesting; -using MQTTnet.Server.Internal; +using MQTTnet.Server; namespace MQTTnet.Tests.Server { diff --git a/Tests/MQTTnet.Core.Tests/Server/Topic_Alias_Tests.cs b/Tests/MQTTnet.Core.Tests/Server/Topic_Alias_Tests.cs index ba5e6f6c..6ffdb5af 100644 --- a/Tests/MQTTnet.Core.Tests/Server/Topic_Alias_Tests.cs +++ b/Tests/MQTTnet.Core.Tests/Server/Topic_Alias_Tests.cs @@ -3,7 +3,6 @@ using System.Linq; using System.Threading.Tasks; using Microsoft.VisualStudio.TestTools.UnitTesting; using MQTTnet.Client; -using MQTTnet.Client.Options; using MQTTnet.Formatter; namespace MQTTnet.Tests.Server @@ -39,13 +38,15 @@ namespace MQTTnet.Tests.Server var receivedTopics = new List(); var c1 = await testEnvironment.ConnectClient(options => options.WithProtocolVersion(MqttProtocolVersion.V500)); - c1.UseApplicationMessageReceivedHandler(e => + c1.ApplicationMessageReceivedAsync += e => { lock (receivedTopics) { receivedTopics.Add(e.ApplicationMessage.Topic); } - }); + + return Task.CompletedTask; + }; await c1.SubscribeAsync("#"); diff --git a/Tests/MQTTnet.Core.Tests/Server/User_Properties_Tests.cs b/Tests/MQTTnet.Core.Tests/Server/User_Properties_Tests.cs index fc305916..14f17c3a 100644 --- a/Tests/MQTTnet.Core.Tests/Server/User_Properties_Tests.cs +++ b/Tests/MQTTnet.Core.Tests/Server/User_Properties_Tests.cs @@ -3,9 +3,8 @@ using System.Threading; using System.Threading.Tasks; using Microsoft.VisualStudio.TestTools.UnitTesting; using MQTTnet.Client; -using MQTTnet.Client.Options; -using MQTTnet.Client.Subscribing; using MQTTnet.Formatter; +using MQTTnet.Packets; using MQTTnet.Tests.Mockups; namespace MQTTnet.Tests.Server @@ -41,7 +40,11 @@ namespace MQTTnet.Tests.Server }, CancellationToken.None); MqttApplicationMessage receivedMessage = null; - receiver.UseApplicationMessageReceivedHandler(e => receivedMessage = e.ApplicationMessage); + receiver.ApplicationMessageReceivedAsync += e => + { + receivedMessage = e.ApplicationMessage; + return Task.CompletedTask; + }; await sender.PublishAsync(message.Build(), CancellationToken.None); diff --git a/Tests/MQTTnet.Test.BlazorApp/Client/Pages/Counter.razor b/Tests/MQTTnet.Test.BlazorApp/Client/Pages/Counter.razor index 57e55f64..64c56224 100644 --- a/Tests/MQTTnet.Test.BlazorApp/Client/Pages/Counter.razor +++ b/Tests/MQTTnet.Test.BlazorApp/Client/Pages/Counter.razor @@ -1,6 +1,6 @@ @page "/counter" -@using MQTTnet.Client.Options @using System.Threading +@using MQTTnet.Client

Counter

diff --git a/Tests/MQTTnet.TestApp.NetCore/ClientFlowTest.cs b/Tests/MQTTnet.TestApp.NetCore/ClientFlowTest.cs index 8c0c6d99..861ca7b7 100644 --- a/Tests/MQTTnet.TestApp.NetCore/ClientFlowTest.cs +++ b/Tests/MQTTnet.TestApp.NetCore/ClientFlowTest.cs @@ -1,8 +1,7 @@ using System; using System.Threading.Tasks; using MQTTnet.Client; -using MQTTnet.Client.Options; -using MQTTnet.Diagnostics.Logger; +using MQTTnet.Diagnostics; namespace MQTTnet.TestApp.NetCore { diff --git a/Tests/MQTTnet.TestApp.NetCore/ClientTest.cs b/Tests/MQTTnet.TestApp.NetCore/ClientTest.cs index 1f177400..34e3af0d 100644 --- a/Tests/MQTTnet.TestApp.NetCore/ClientTest.cs +++ b/Tests/MQTTnet.TestApp.NetCore/ClientTest.cs @@ -1,13 +1,11 @@ using MQTTnet.Client; -using MQTTnet.Client.Connecting; -using MQTTnet.Client.Disconnecting; -using MQTTnet.Client.Options; -using MQTTnet.Client.Receiving; using MQTTnet.Protocol; using System; using System.Text; using System.Threading.Tasks; -using MQTTnet.Diagnostics.Logger; +using MQTTnet.Diagnostics; +using MQTTnet.Implementations; +using MQTTnet.Packets; namespace MQTTnet.TestApp.NetCore { @@ -30,7 +28,7 @@ namespace MQTTnet.TestApp.NetCore } }; - client.ApplicationMessageReceivedHandler = new MqttApplicationMessageReceivedHandlerDelegate(e => + client.ApplicationMessageReceivedAsync += e => { Console.WriteLine("### RECEIVED APPLICATION MESSAGE ###"); Console.WriteLine($"+ Topic = {e.ApplicationMessage.Topic}"); @@ -38,7 +36,9 @@ namespace MQTTnet.TestApp.NetCore Console.WriteLine($"+ QoS = {e.ApplicationMessage.QualityOfServiceLevel}"); Console.WriteLine($"+ Retain = {e.ApplicationMessage.Retain}"); Console.WriteLine(); - }); + + return PlatformAbstractionLayer.CompletedTask; + }; client.ConnectedHandler = new MqttClientConnectedHandlerDelegate(async e => { diff --git a/Tests/MQTTnet.TestApp.NetCore/ManagedClientTest.cs b/Tests/MQTTnet.TestApp.NetCore/ManagedClientTest.cs index 663d6ec3..9d980fde 100644 --- a/Tests/MQTTnet.TestApp.NetCore/ManagedClientTest.cs +++ b/Tests/MQTTnet.TestApp.NetCore/ManagedClientTest.cs @@ -3,9 +3,10 @@ using System.Threading.Tasks; using System.IO; using Newtonsoft.Json; using System.Collections.Generic; -using MQTTnet.Client.Options; -using MQTTnet.Client.Receiving; +using MQTTnet.Client; using MQTTnet.Extensions.ManagedClient; +using MQTTnet.Implementations; +using MQTTnet.Packets; using MQTTnet.Protocol; namespace MQTTnet.TestApp.NetCore @@ -35,10 +36,11 @@ namespace MQTTnet.TestApp.NetCore try { var managedClient = new MqttFactory().CreateManagedMqttClient(); - managedClient.ApplicationMessageReceivedHandler = new MqttApplicationMessageReceivedHandlerDelegate(e => + managedClient.ApplicationMessageReceivedAsync += e => { Console.WriteLine(">> RECEIVED: " + e.ApplicationMessage.Topic); - }); + return PlatformAbstractionLayer.CompletedTask; + }; await managedClient.StartAsync(options); @@ -69,7 +71,7 @@ namespace MQTTnet.TestApp.NetCore public class ClientRetainedMessageHandler : IManagedMqttClientStorage { - private const string Filename = @"RetainedMessages.json"; + const string Filename = @"RetainedMessages.json"; public Task SaveQueuedMessagesAsync(IList messages) { diff --git a/Tests/MQTTnet.TestApp.NetCore/MqttNetConsoleLogger.cs b/Tests/MQTTnet.TestApp.NetCore/MqttNetConsoleLogger.cs index 1c1d6ed9..fad67260 100644 --- a/Tests/MQTTnet.TestApp.NetCore/MqttNetConsoleLogger.cs +++ b/Tests/MQTTnet.TestApp.NetCore/MqttNetConsoleLogger.cs @@ -1,6 +1,6 @@ using System; using System.Text; -using MQTTnet.Diagnostics.Logger; +using MQTTnet.Diagnostics; namespace MQTTnet.TestApp.NetCore { diff --git a/Tests/MQTTnet.TestApp.NetCore/PerformanceTest.cs b/Tests/MQTTnet.TestApp.NetCore/PerformanceTest.cs index 3c20bff2..3f201047 100644 --- a/Tests/MQTTnet.TestApp.NetCore/PerformanceTest.cs +++ b/Tests/MQTTnet.TestApp.NetCore/PerformanceTest.cs @@ -5,7 +5,6 @@ using System.Text; using System.Threading; using System.Threading.Tasks; using MQTTnet.Client; -using MQTTnet.Client.Options; using MQTTnet.Protocol; using MQTTnet.Server; @@ -96,12 +95,12 @@ namespace MQTTnet.TestApp.NetCore } } - private static Task RunClientsAsync(int msgChunkSize, TimeSpan interval, bool concurrent) + static Task RunClientsAsync(int msgChunkSize, TimeSpan interval, bool concurrent) { return Task.WhenAll(Enumerable.Range(0, 3).Select(i => Task.Run(() => RunClientAsync(msgChunkSize, interval, concurrent)))); } - private static async Task RunClientAsync(int msgChunkSize, TimeSpan interval, bool concurrent) + static async Task RunClientAsync(int msgChunkSize, TimeSpan interval, bool concurrent) { try { @@ -178,7 +177,7 @@ namespace MQTTnet.TestApp.NetCore } } - private static MqttApplicationMessage CreateMessage() + static MqttApplicationMessage CreateMessage() { //const string Payload = "###############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################" //const string Payload = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"; @@ -192,7 +191,7 @@ namespace MQTTnet.TestApp.NetCore }; } - private static Task PublishSingleMessage(IMqttClient client, MqttApplicationMessage applicationMessage, ref int count) + static Task PublishSingleMessage(IMqttClient client, MqttApplicationMessage applicationMessage, ref int count) { Interlocked.Increment(ref count); return Task.Run(() => client.PublishAsync(applicationMessage)); diff --git a/Tests/MQTTnet.TestApp.NetCore/Program.cs b/Tests/MQTTnet.TestApp.NetCore/Program.cs index a4a1f759..1a51677c 100644 --- a/Tests/MQTTnet.TestApp.NetCore/Program.cs +++ b/Tests/MQTTnet.TestApp.NetCore/Program.cs @@ -1,5 +1,4 @@ -using MQTTnet.Client.Options; -using MQTTnet.Diagnostics; +using MQTTnet.Diagnostics; using MQTTnet.Server; using Newtonsoft.Json; using System; @@ -9,7 +8,7 @@ using System.Net.Security; using System.Threading; using System.Threading.Tasks; using MQTTnet.Client; -using MQTTnet.Diagnostics.Runtime; +using MQTTnet.Implementations; namespace MQTTnet.TestApp.NetCore { @@ -110,10 +109,11 @@ namespace MQTTnet.TestApp.NetCore .Build(); //mqttClient.ApplicationMessageReceived += (s, e) => // version 2.8.5 - mqttClient.UseApplicationMessageReceivedHandler(e => // version 3.0.0+ + mqttClient.ApplicationMessageReceivedAsync += e => // version 3.0.0+ { Interlocked.Increment(ref _count); - }); + return PlatformAbstractionLayer.CompletedTask; + }; //mqttClient.Connected += async (s, e) => // version 2.8.5 mqttClient.UseConnectedHandler(async e => // version 3.0.0+ diff --git a/Tests/MQTTnet.TestApp.NetCore/PublicBrokerTest.cs b/Tests/MQTTnet.TestApp.NetCore/PublicBrokerTest.cs index b039c35b..2a551520 100644 --- a/Tests/MQTTnet.TestApp.NetCore/PublicBrokerTest.cs +++ b/Tests/MQTTnet.TestApp.NetCore/PublicBrokerTest.cs @@ -1,13 +1,10 @@ using MQTTnet.Client; using System; -using System.IO; -using System.Net; using System.Security.Authentication; using System.Threading; using System.Threading.Tasks; -using MQTTnet.Client.Options; -using MQTTnet.Client.Receiving; using MQTTnet.Formatter; +using MQTTnet.Implementations; using MQTTnet.Protocol; namespace MQTTnet.TestApp.NetCore @@ -129,7 +126,7 @@ namespace MQTTnet.TestApp.NetCore Console.ReadLine(); } - private static async Task ExecuteTestAsync(string name, IMqttClientOptions options) + static async Task ExecuteTestAsync(string name, IMqttClientOptions options) { try { @@ -140,7 +137,11 @@ namespace MQTTnet.TestApp.NetCore var topic = Guid.NewGuid().ToString(); MqttApplicationMessage receivedMessage = null; - client.ApplicationMessageReceivedHandler = new MqttApplicationMessageReceivedHandlerDelegate(e => receivedMessage = e.ApplicationMessage); + client.ApplicationMessageReceivedAsync += e => + { + receivedMessage = e.ApplicationMessage; + return PlatformAbstractionLayer.CompletedTask; + }; await client.ConnectAsync(options); await client.SubscribeAsync(topic, MqttQualityOfServiceLevel.AtLeastOnce); @@ -164,7 +165,7 @@ namespace MQTTnet.TestApp.NetCore } } - private static void Write(string message, ConsoleColor color) + static void Write(string message, ConsoleColor color) { Console.ForegroundColor = color; Console.Write(message); diff --git a/Tests/MQTTnet.TestApp.NetCore/ServerAndClientTest.cs b/Tests/MQTTnet.TestApp.NetCore/ServerAndClientTest.cs index 47adca67..dbe2b188 100644 --- a/Tests/MQTTnet.TestApp.NetCore/ServerAndClientTest.cs +++ b/Tests/MQTTnet.TestApp.NetCore/ServerAndClientTest.cs @@ -1,8 +1,7 @@ using System.Threading; using System.Threading.Tasks; using MQTTnet.Client; -using MQTTnet.Client.Options; -using MQTTnet.Diagnostics.Logger; +using MQTTnet.Diagnostics; using MQTTnet.Server; namespace MQTTnet.TestApp.NetCore diff --git a/Tests/MQTTnet.TestApp.NetCore/ServerTest.cs b/Tests/MQTTnet.TestApp.NetCore/ServerTest.cs index b2d78d19..a7e6c97c 100644 --- a/Tests/MQTTnet.TestApp.NetCore/ServerTest.cs +++ b/Tests/MQTTnet.TestApp.NetCore/ServerTest.cs @@ -1,11 +1,10 @@ using System; using System.Text; using System.Threading.Tasks; -using MQTTnet.Diagnostics.Logger; +using MQTTnet.Diagnostics; using MQTTnet.Implementations; using MQTTnet.Protocol; using MQTTnet.Server; -using MQTTnet.Server.Internal; namespace MQTTnet.TestApp.NetCore {