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