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 : IDisposable { private readonly TcpClient _client = new(); /// public virtual int ReceiveTimeout { get => _client.ReceiveTimeout; set => _client.ReceiveTimeout = value; } /// public virtual int SendTimeout { get => _client.SendTimeout; set => _client.SendTimeout = value; } /// public virtual bool Connected => _client.Connected; /// public virtual SocketWrapper Client { get => new(_client.Client); set => _client.Client = value.Client; } /// 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 void Dispose() => _client.Dispose(); /// public virtual NetworkStreamWrapper GetStream() => new(_client.GetStream()); } }