using System; using System.IO; using System.Net.Sockets; using System.Threading.Tasks; using System.Threading; namespace AMWD.Protocols.Modbus.Tcp.Utils { /// [System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] internal class NetworkStreamWrapper : IDisposable { private readonly NetworkStream _stream; [Obsolete("Constructor only for mocking on UnitTests!", error: true)] public NetworkStreamWrapper() { } public NetworkStreamWrapper(NetworkStream stream) { _stream = stream; } /// public virtual void Dispose() => _stream.Dispose(); /// public virtual Task ReadAsync(byte[] buffer, int offset, int count, CancellationToken cancellationToken = default) => _stream.ReadAsync(buffer, offset, count, cancellationToken); #if NET6_0_OR_GREATER /// public virtual ValueTask ReadAsync(Memory buffer, CancellationToken cancellationToken = default) => _stream.ReadAsync(buffer, cancellationToken); #endif /// public virtual Task WriteAsync(byte[] buffer, int offset, int count, CancellationToken cancellationToken = default) => _stream.WriteAsync(buffer, offset, count, cancellationToken); #if NET6_0_OR_GREATER /// public virtual ValueTask WriteAsync(ReadOnlyMemory buffer, CancellationToken cancellationToken = default) => _stream.WriteAsync(buffer, cancellationToken); #endif /// public virtual Task FlushAsync(CancellationToken cancellationToken = default) => _stream.FlushAsync(cancellationToken); } }