Backend/e-suite.API/eSuite.API/HealthChecks/SocketFacade.cs
2026-01-20 21:50:10 +00:00

77 lines
2.2 KiB
C#

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