Refactor TCP channel.

This commit is contained in:
Christian Kratky
2018-06-06 22:04:37 +02:00
parent eb48f87667
commit 840d8ab4fd
2 changed files with 41 additions and 73 deletions
@@ -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
@@ -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