using System; using System.Net; using System.Net.Sockets; using System.Threading; using System.Threading.Tasks; namespace AMWD.Protocols.Modbus.Tcp.Utils { /// [System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] internal class TcpClientWrapper(AddressFamily addressFamily) : IDisposable { #region Fields private readonly TcpClient _client = new(addressFamily); #endregion Fields #region Properties /// public virtual bool Connected => _client.Connected; /// public virtual int ReceiveTimeout { get => _client.ReceiveTimeout; set => _client.ReceiveTimeout = value; } /// public virtual int SendTimeout { get => _client.SendTimeout; set => _client.SendTimeout = value; } #endregion Properties #region Methods /// public virtual void Close() => _client.Close(); #if NET6_0_OR_GREATER /// public virtual Task ConnectAsync(IPAddress address, int port, CancellationToken cancellationToken) => _client.ConnectAsync(address, port, cancellationToken).AsTask(); #else /// public virtual Task ConnectAsync(IPAddress address, int port) => _client.ConnectAsync(address, port); #endif /// public virtual NetworkStreamWrapper GetStream() => new(_client.GetStream()); #endregion Methods #region IDisposable /// public virtual void Dispose() => _client.Dispose(); #endregion IDisposable } }