Переглянути джерело

Refactor TCP channel.

release/3.x.x
Christian Kratky 6 роки тому
джерело
коміт
840d8ab4fd
2 змінених файлів з 41 додано та 73 видалено
  1. +21
    -44
      Frameworks/MQTTnet.NetStandard/Implementations/MqttTcpChannel.Uwp.cs
  2. +20
    -29
      Frameworks/MQTTnet.NetStandard/Implementations/MqttTcpChannel.cs

+ 21
- 44
Frameworks/MQTTnet.NetStandard/Implementations/MqttTcpChannel.Uwp.cs Переглянути файл

@@ -92,50 +92,9 @@ namespace MQTTnet.Implementations

public void Dispose()
{
try
{
_readStream?.Dispose();
}
catch (ObjectDisposedException)
{
}
catch (NullReferenceException)
{
}
finally
{
_readStream = null;
}

try
{
_writeStream?.Dispose();
}
catch (ObjectDisposedException)
{
}
catch (NullReferenceException)
{
}
finally
{
_writeStream = null;
}

try
{
_socket?.Dispose();
}
catch (ObjectDisposedException)
{
}
catch (NullReferenceException)
{
}
finally
{
_socket = null;
}
TryDispose(_readStream, () => _readStream = null);
TryDispose(_writeStream, () => _writeStream = null);
TryDispose(_socket, () => _socket = null);
}

private static Certificate LoadCertificate(MqttClientTcpOptions options)
@@ -187,6 +146,24 @@ namespace MQTTnet.Implementations
_readStream = _socket.InputStream.AsStreamForRead(_bufferSize);
_writeStream = _socket.OutputStream.AsStreamForWrite(_bufferSize);
}

private static void TryDispose(IDisposable disposable, Action afterDispose)
{
try
{
disposable?.Dispose();
}
catch (ObjectDisposedException)
{
}
catch (NullReferenceException)
{
}
finally
{
afterDispose();
}
}
}
}
#endif

+ 20
- 29
Frameworks/MQTTnet.NetStandard/Implementations/MqttTcpChannel.cs Переглянути файл

@@ -84,35 +84,8 @@ namespace MQTTnet.Implementations

public void Dispose()
{
try
{
_stream?.Dispose();
}
catch (ObjectDisposedException)
{
}
catch (NullReferenceException)
{
}
finally
{
_stream = null;
}

try
{
_socket?.Dispose();
}
catch (ObjectDisposedException)
{
}
catch (NullReferenceException)
{
}
finally
{
_socket = null;
}
TryDispose(_stream, () => _stream = null);
TryDispose(_socket, () => _socket = null);
}

private bool InternalUserCertificateValidationCallback(object sender, X509Certificate x509Certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors)
@@ -173,6 +146,24 @@ namespace MQTTnet.Implementations
_stream = new NetworkStream(_socket, true);
}
}

private static void TryDispose(IDisposable disposable, Action afterDispose)
{
try
{
disposable?.Dispose();
}
catch (ObjectDisposedException)
{
}
catch (NullReferenceException)
{
}
finally
{
afterDispose();
}
}
}
}
#endif

Завантаження…
Відмінити
Зберегти