Improve connection disposal.

This commit is contained in:
Christian Kratky
2019-04-22 10:50:47 +02:00
parent 5c903e6fbf
commit 6399172582
20 changed files with 179 additions and 165 deletions
@@ -27,12 +27,12 @@ namespace MQTTnet.Server
private readonly IMqttNetChildLogger _logger;
private readonly IMqttServerOptions _serverOptions;
private Task<MqttClientDisconnectType> _packageReceiverTask;
private readonly IMqttChannelAdapter _channelAdapter;
private readonly IMqttDataConverter _dataConverter;
private readonly string _endpoint;
private readonly MqttConnectPacket _connectPacket;
private Task<MqttClientDisconnectType> _packageReceiverTask;
private DateTime _lastPacketReceivedTimestamp;
private DateTime _lastNonKeepAlivePacketReceivedTimestamp;
@@ -78,7 +78,7 @@ namespace MQTTnet.Server
StopInternal();
var task = _packageReceiverTask;
if (task != null && !task.IsCompleted)
if (task != null)
{
await task.ConfigureAwait(false);
}
@@ -103,13 +103,6 @@ namespace MQTTnet.Server
status.BytesReceived = _channelAdapter.BytesReceived;
}
//public void ClearPendingApplicationMessages()
//{
// Session.ApplicationMessagesQueue.Clear();
// //_applicationMessagesQueue.Clear();
//}
public void Dispose()
{
_cancellationToken.Dispose();
@@ -57,9 +57,9 @@ namespace MQTTnet.Server
}
}
public Task HandleConnectionAsync(IMqttChannelAdapter clientAdapter)
public Task HandleClientAsync(IMqttChannelAdapter clientAdapter)
{
return HandleConnectionAsync(clientAdapter, _cancellationToken);
return HandleClientAsync(clientAdapter, _cancellationToken);
}
public Task<IList<IMqttClientStatus>> GetClientStatusAsync()
@@ -221,7 +221,7 @@ namespace MQTTnet.Server
}
}
private async Task HandleConnectionAsync(IMqttChannelAdapter channelAdapter, CancellationToken cancellationToken)
private async Task HandleClientAsync(IMqttChannelAdapter channelAdapter, CancellationToken cancellationToken)
{
var disconnectType = MqttClientDisconnectType.NotClean;
var clientId = string.Empty;
@@ -376,10 +376,6 @@ namespace MQTTnet.Server
{
_logger.Error(exception, "Error while disconnecting client channel.");
}
finally
{
channelAdapter.Dispose();
}
}
}
}
+4 -4
View File
@@ -127,7 +127,7 @@ namespace MQTTnet.Server
foreach (var adapter in _adapters)
{
adapter.ClientAcceptedHandler = OnClientAccepted;
adapter.ClientHandler = OnHandleClient;
await adapter.StartAsync(Options).ConfigureAwait(false);
}
@@ -155,7 +155,7 @@ namespace MQTTnet.Server
foreach (var adapter in _adapters)
{
adapter.ClientAcceptedHandler = null;
adapter.ClientHandler = null;
await adapter.StopAsync().ConfigureAwait(false);
}
@@ -184,9 +184,9 @@ namespace MQTTnet.Server
return _retainedMessagesManager?.ClearMessagesAsync();
}
private void OnClientAccepted(MqttServerAdapterClientAcceptedEventArgs eventArgs)
private Task OnHandleClient(IMqttChannelAdapter channelAdapter)
{
eventArgs.SessionTask = _clientSessionsManager.HandleConnectionAsync(eventArgs.ChannelAdapter);
return _clientSessionsManager.HandleClientAsync(channelAdapter);
}
}
}