using System.Net;
using System.Net.Sockets;
namespace eSuite.API.HealthChecks;
///
/// Class to provide and interface facade for the Socket class
///
public class SocketFacade : ISocketFacade
{
private Socket _socket;
///
/// Creates a new Socket using the parameters provided.
///
///
///
///
public SocketFacade(AddressFamily endPointAddressFamily, SocketType stream, ProtocolType tcp)
{
_socket = new Socket(endPointAddressFamily, stream, tcp);
}
///
/// Disposes of the underlying socket.
///
public void Dispose()
{
// ReSharper disable once ConditionIsAlwaysTrueOrFalseAccordingToNullableAPIContract
if (_socket == null)
return;
GC.SuppressFinalize(this);
_socket.Dispose();
_socket = null!;
}
///
/// Connect to the socket
///
///
public void Connect(IPEndPoint endPoint)
{
_socket.Connect(endPoint);
}
///
/// Sends data to the socket
///
///
///
///
///
public void Send(byte[] dataArray, int offset, int size, SocketFlags socketFlags)
{
_socket.Send(dataArray, offset, size, socketFlags);
}
///
/// Receives data from the socket
///
///
///
///
///
///
public int Receive(byte[] responseArray, int offset, int size, SocketFlags socketFlags)
{
return _socket.Receive(responseArray, offset, size, socketFlags);
}
///
/// Number of bytes available for reading.
///
public int Available => _socket.Available;
}