Added UnitTests for TCP
This commit is contained in:
@@ -6,7 +6,7 @@ namespace System.Collections.Generic
|
||||
// ============================================================================================================================= //
|
||||
// Source: https://git.am-wd.de/am.wd/common/-/blob/d4b390ad911ce302cc371bb2121fa9c31db1674a/AMWD.Common/Utilities/AsyncQueue.cs //
|
||||
// ============================================================================================================================= //
|
||||
[System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage]
|
||||
[Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage]
|
||||
internal class AsyncQueue<T>
|
||||
{
|
||||
private readonly Queue<T> _queue = new();
|
||||
|
||||
@@ -115,7 +115,10 @@ namespace AMWD.Protocols.Modbus.Tcp
|
||||
#endif
|
||||
|
||||
if (_disconnectCts != null)
|
||||
{
|
||||
await _reconnectTask;
|
||||
return;
|
||||
}
|
||||
|
||||
_disconnectCts = new CancellationTokenSource();
|
||||
using var linkedCts = CancellationTokenSource.CreateLinkedTokenSource(_disconnectCts.Token, cancellationToken);
|
||||
@@ -166,6 +169,16 @@ namespace AMWD.Protocols.Modbus.Tcp
|
||||
if (!IsConnected)
|
||||
throw new ApplicationException($"Connection is not open");
|
||||
|
||||
if (request?.Count < 1)
|
||||
throw new ArgumentNullException(nameof(request));
|
||||
|
||||
#if NET8_0_OR_GREATER
|
||||
ArgumentNullException.ThrowIfNull(validateResponseComplete);
|
||||
#else
|
||||
if (validateResponseComplete == null)
|
||||
throw new ArgumentNullException(nameof(validateResponseComplete));
|
||||
#endif
|
||||
|
||||
var item = new RequestQueueItem
|
||||
{
|
||||
Request = [.. request],
|
||||
@@ -178,7 +191,7 @@ namespace AMWD.Protocols.Modbus.Tcp
|
||||
{
|
||||
_requestQueue.Remove(item);
|
||||
item.CancellationTokenSource.Dispose();
|
||||
item.TaskCompletionSource.TrySetCanceled();
|
||||
item.TaskCompletionSource.TrySetCanceled(cancellationToken);
|
||||
item.CancellationTokenRegistration.Dispose();
|
||||
});
|
||||
|
||||
@@ -375,7 +388,6 @@ namespace AMWD.Protocols.Modbus.Tcp
|
||||
catch (Exception ex)
|
||||
{
|
||||
item.TaskCompletionSource.TrySetException(ex);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -12,7 +12,7 @@ namespace AMWD.Protocols.Modbus.Tcp.Utils
|
||||
{
|
||||
private readonly NetworkStream _stream;
|
||||
|
||||
[Obsolete("Constructor only for mocking on UnitTests!")]
|
||||
[Obsolete("Constructor only for mocking on UnitTests!", error: true)]
|
||||
public NetworkStreamWrapper()
|
||||
{ }
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@ namespace AMWD.Protocols.Modbus.Tcp.Utils
|
||||
[System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage]
|
||||
internal class SocketWrapper : IDisposable
|
||||
{
|
||||
[Obsolete("Constructor only for mocking on UnitTests!")]
|
||||
[Obsolete("Constructor only for mocking on UnitTests!", error: true)]
|
||||
public SocketWrapper()
|
||||
{ }
|
||||
|
||||
|
||||
Reference in New Issue
Block a user