mirror of
https://github.com/dotnet/MQTTnet.git
synced 2026-10-21 12:16:02 +08:00
Refactor event handler namings.
This commit is contained in:
@@ -1,5 +1,4 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.Generic;
|
||||
using System.Threading.Tasks;
|
||||
using MQTTnet.Server.Status;
|
||||
|
||||
@@ -7,8 +6,8 @@ namespace MQTTnet.Server
|
||||
{
|
||||
public interface IMqttServer : IApplicationMessageReceiver, IApplicationMessagePublisher
|
||||
{
|
||||
event EventHandler Started;
|
||||
event EventHandler Stopped;
|
||||
IMqttServerStartedHandler StartedHandler { get; set; }
|
||||
IMqttServerStoppedHandler StoppedHandler { get; set; }
|
||||
|
||||
IMqttServerClientConnectedHandler ClientConnectedHandler { get; set; }
|
||||
IMqttServerClientDisconnectedHandler ClientDisconnectedHandler { get; set; }
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
using System;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace MQTTnet.Server
|
||||
{
|
||||
public interface IMqttServerStartedHandler
|
||||
{
|
||||
Task HandleServerStartedAsync(EventArgs eventArgs);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
using System;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace MQTTnet.Server
|
||||
{
|
||||
public interface IMqttServerStoppedHandler
|
||||
{
|
||||
Task HandleServerStoppedAsync(EventArgs eventArgs);
|
||||
}
|
||||
}
|
||||
@@ -369,7 +369,7 @@ namespace MQTTnet.Server
|
||||
//// }
|
||||
////});
|
||||
|
||||
await Task.FromResult(0);
|
||||
//await Task.FromResult(0);
|
||||
}
|
||||
|
||||
private async Task SendPendingPacketsAsync()
|
||||
|
||||
@@ -15,6 +15,7 @@ namespace MQTTnet.Server
|
||||
{
|
||||
private readonly BlockingCollection<MqttEnqueuedApplicationMessage> _messageQueue = new BlockingCollection<MqttEnqueuedApplicationMessage>();
|
||||
|
||||
private readonly SemaphoreSlim _createConnectionGate = new SemaphoreSlim(1, 1);
|
||||
private readonly ConcurrentDictionary<string, MqttClientConnection> _connections = new ConcurrentDictionary<string, MqttClientConnection>();
|
||||
private readonly ConcurrentDictionary<string, MqttClientSession> _sessions = new ConcurrentDictionary<string, MqttClientSession>();
|
||||
|
||||
@@ -49,8 +50,6 @@ namespace MQTTnet.Server
|
||||
|
||||
public async Task StopAsync()
|
||||
{
|
||||
//using (await _sessionsLock.WaitAsync(CancellationToken.None).ConfigureAwait(false))
|
||||
|
||||
foreach (var connection in _connections.Values)
|
||||
{
|
||||
await connection.StopAsync().ConfigureAwait(false);
|
||||
@@ -133,7 +132,7 @@ namespace MQTTnet.Server
|
||||
{
|
||||
if (_connections.TryGetValue(clientId, out var connection))
|
||||
{
|
||||
await connection.StopAsync();
|
||||
await connection.StopAsync().ConfigureAwait(false);
|
||||
}
|
||||
|
||||
if (_sessions.TryRemove(clientId, out var session))
|
||||
@@ -313,8 +312,6 @@ namespace MQTTnet.Server
|
||||
return context;
|
||||
}
|
||||
|
||||
private readonly SemaphoreSlim _createConnectionGate = new SemaphoreSlim(1, 1);
|
||||
|
||||
private async Task<MqttClientConnection> CreateConnectionAsync(IMqttChannelAdapter channelAdapter, MqttConnectPacket connectPacket)
|
||||
{
|
||||
await _createConnectionGate.WaitAsync(_cancellationToken).ConfigureAwait(false);
|
||||
|
||||
@@ -30,8 +30,9 @@ namespace MQTTnet.Server
|
||||
_logger = logger.CreateChildLogger(nameof(MqttServer));
|
||||
}
|
||||
|
||||
public event EventHandler Started;
|
||||
public event EventHandler Stopped;
|
||||
public IMqttServerStartedHandler StartedHandler { get; set; }
|
||||
|
||||
public IMqttServerStoppedHandler StoppedHandler { get; set; }
|
||||
|
||||
public IMqttServerClientConnectedHandler ClientConnectedHandler
|
||||
{
|
||||
@@ -57,7 +58,7 @@ namespace MQTTnet.Server
|
||||
set => _eventDispatcher.ClientUnsubscribedTopicHandler = value;
|
||||
}
|
||||
|
||||
public IMqttApplicationMessageHandler ApplicationMessageReceivedHandler
|
||||
public IMqttApplicationMessageReceivedHandler ApplicationMessageReceivedHandler
|
||||
{
|
||||
get => _eventDispatcher.ApplicationMessageReceivedHandler;
|
||||
set => _eventDispatcher.ApplicationMessageReceivedHandler = value;
|
||||
@@ -128,7 +129,12 @@ namespace MQTTnet.Server
|
||||
}
|
||||
|
||||
_logger.Info("Started.");
|
||||
Started?.Invoke(this, EventArgs.Empty);
|
||||
|
||||
var startedHandler = StartedHandler;
|
||||
if (startedHandler != null)
|
||||
{
|
||||
await startedHandler.HandleServerStartedAsync(EventArgs.Empty).ConfigureAwait(false);
|
||||
}
|
||||
}
|
||||
|
||||
public async Task StopAsync()
|
||||
@@ -151,7 +157,6 @@ namespace MQTTnet.Server
|
||||
}
|
||||
|
||||
_logger.Info("Stopped.");
|
||||
Stopped?.Invoke(this, EventArgs.Empty);
|
||||
}
|
||||
finally
|
||||
{
|
||||
@@ -163,6 +168,12 @@ namespace MQTTnet.Server
|
||||
_clientSessionsManager?.Dispose();
|
||||
_clientSessionsManager = null;
|
||||
}
|
||||
|
||||
var stoppedHandler = StoppedHandler;
|
||||
if (stoppedHandler != null)
|
||||
{
|
||||
await stoppedHandler.HandleServerStoppedAsync(EventArgs.Empty).ConfigureAwait(false);
|
||||
}
|
||||
}
|
||||
|
||||
public Task ClearRetainedMessagesAsync()
|
||||
|
||||
@@ -13,7 +13,7 @@ namespace MQTTnet.Server
|
||||
|
||||
public IMqttServerClientUnsubscribedTopicHandler ClientUnsubscribedTopicHandler { get; set; }
|
||||
|
||||
public IMqttApplicationMessageHandler ApplicationMessageReceivedHandler { get; set; }
|
||||
public IMqttApplicationMessageReceivedHandler ApplicationMessageReceivedHandler { get; set; }
|
||||
|
||||
public Task HandleClientConnectedAsync(string clientId)
|
||||
{
|
||||
@@ -67,7 +67,7 @@ namespace MQTTnet.Server
|
||||
return Task.FromResult(0);
|
||||
}
|
||||
|
||||
return handler.HandleApplicationMessageAsync(new MqttApplicationMessageReceivedEventArgs(senderClientId, applicationMessage));
|
||||
return handler.HandleApplicationMessageReceivedAsync(new MqttApplicationMessageReceivedEventArgs(senderClientId, applicationMessage));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,31 @@
|
||||
using System;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace MQTTnet.Server
|
||||
{
|
||||
public class MqttServerStartedHandlerDelegate : IMqttServerStartedHandler
|
||||
{
|
||||
private readonly Func<EventArgs, Task> _handler;
|
||||
|
||||
public MqttServerStartedHandlerDelegate(Action<EventArgs> handler)
|
||||
{
|
||||
if (handler == null) throw new ArgumentNullException(nameof(handler));
|
||||
|
||||
_handler = eventArgs =>
|
||||
{
|
||||
handler(eventArgs);
|
||||
return Task.FromResult(0);
|
||||
};
|
||||
}
|
||||
|
||||
public MqttServerStartedHandlerDelegate(Func<EventArgs, Task> handler)
|
||||
{
|
||||
_handler = handler ?? throw new ArgumentNullException(nameof(handler));
|
||||
}
|
||||
|
||||
public Task HandleServerStartedAsync(EventArgs eventArgs)
|
||||
{
|
||||
return _handler(eventArgs);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
using System;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace MQTTnet.Server
|
||||
{
|
||||
public class MqttServerStoppedHandlerDelegate : IMqttServerStoppedHandler
|
||||
{
|
||||
private readonly Func<EventArgs, Task> _handler;
|
||||
|
||||
public MqttServerStoppedHandlerDelegate(Action<EventArgs> handler)
|
||||
{
|
||||
if (handler == null) throw new ArgumentNullException(nameof(handler));
|
||||
|
||||
_handler = eventArgs =>
|
||||
{
|
||||
handler(eventArgs);
|
||||
return Task.FromResult(0);
|
||||
};
|
||||
}
|
||||
|
||||
public MqttServerStoppedHandlerDelegate(Func<EventArgs, Task> handler)
|
||||
{
|
||||
_handler = handler ?? throw new ArgumentNullException(nameof(handler));
|
||||
}
|
||||
|
||||
public Task HandleServerStoppedAsync(EventArgs eventArgs)
|
||||
{
|
||||
return _handler(eventArgs);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user