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