#pragma warning disable CS1591
using System ;
using System.Net ;
using System.Threading ;
using System.Threading.Tasks ;
namespace MediaBrowser.Model.Net
{
/// <summary>
/// Provides a common interface across platforms for UDP sockets used by this SSDP implementation.
/// </summary>
public interface ISocket : IDisposable
{
IPAddress LocalIPAddress { get ; }
Task < SocketReceiveResult > ReceiveAsync ( byte [ ] buffer , int offset , int count , CancellationToken cancellationToken ) ;
IAsyncResult BeginReceive ( byte [ ] buffer , int offset , int count , AsyncCallback callback ) ;
SocketReceiveResult EndReceive ( IAsyncResult result ) ;
/// <summary>
/// Sends a UDP message to a particular end point (uni or multicast).
/// </summary>
/// <param name="buffer">An array of type <see cref="byte" /> that contains the data to send.</param>
/// <param name="offset">The zero-based position in buffer at which to begin sending data.</param>
/// <param name="bytes">The number of bytes to send.</param>
/// <param name="endPoint">An <see cref="IPEndPoint" /> that represents the remote device.</param>
/// <param name="cancellationToken">The cancellation token to cancel operation.</param>
/// <returns>The task object representing the asynchronous operation.</returns>
Task SendToAsync ( byte [ ] buffer , int offset , int bytes , IPEndPoint endPoint , CancellationToken cancellationToken ) ;
}
}