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;
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);
}
}