using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks; namespace MediaBrowser.Model.Net { /// /// Provides a common interface across platforms for UDP sockets used by this SSDP implementation. /// public interface ISocket : IDisposable { IpAddressInfo LocalIPAddress { get; } /// /// Waits for and returns the next UDP message sent to this socket (uni or multicast). /// /// Task ReceiveAsync(CancellationToken cancellationToken); Task ReceiveAsync(byte[] buffer, int offset, int count, CancellationToken cancellationToken); IAsyncResult BeginReceive(byte[] buffer, int offset, int count, AsyncCallback callback); SocketReceiveResult EndReceive(IAsyncResult result); /// /// Sends a UDP message to a particular end point (uni or multicast). /// Task SendToAsync(byte[] buffer, int offset, int bytes, IpEndPointInfo endPoint, CancellationToken cancellationToken); IAsyncResult BeginSendTo(byte[] buffer, int offset, int size, IpEndPointInfo endPoint, AsyncCallback callback, object state); int EndSendTo(IAsyncResult result); } }