2016-11-04 09:31:05 +01:00
2017-05-25 15:00:14 +02:00
using System.IO ;
2016-11-04 09:31:05 +01:00
namespace MediaBrowser.Model.Net
2016-10-30 00:22:20 +02:00
{
2016-11-04 09:31:05 +01:00
/// <summary>
2017-03-02 21:50:09 +01:00
/// Implemented by components that can create a platform specific UDP socket implementation, and wrap it in the cross platform <see cref="ISocket"/> interface.
2016-11-04 09:31:05 +01:00
/// </summary>
public interface ISocketFactory
2016-10-30 00:22:20 +02:00
{
/// <summary>
/// Createa a new unicast socket using the specified local port number.
/// </summary>
/// <param name="localPort">The local port to bind to.</param>
2017-03-02 21:50:09 +01:00
/// <returns>A <see cref="ISocket"/> implementation.</returns>
ISocket CreateUdpSocket ( int localPort ) ;
2017-03-13 05:08:23 +01:00
ISocket CreateUdpBroadcastSocket ( int localPort ) ;
2017-03-02 21:50:09 +01:00
ISocket CreateTcpSocket ( IpAddressInfo remoteAddress , int remotePort ) ;
2016-10-30 00:22:20 +02:00
2016-11-04 19:56:47 +01:00
/// <summary>
/// Createa a new unicast socket using the specified local port number.
/// </summary>
2017-03-02 21:50:09 +01:00
ISocket CreateSsdpUdpSocket ( IpAddressInfo localIp , int localPort ) ;
2016-11-04 19:56:47 +01:00
/// <summary>
/// Createa a new multicast socket using the specified multicast IP address, multicast time to live and local port.
/// </summary>
/// <param name="ipAddress">The multicast IP address to bind to.</param>
/// <param name="multicastTimeToLive">The multicast time to live value. Actually a maximum number of network hops for UDP packets.</param>
/// <param name="localPort">The local port to bind to.</param>
2017-03-02 21:50:09 +01:00
/// <returns>A <see cref="ISocket"/> implementation.</returns>
ISocket CreateUdpMulticastSocket ( string ipAddress , int multicastTimeToLive , int localPort ) ;
2016-11-08 19:44:23 +01:00
2017-03-03 06:53:21 +01:00
IAcceptSocket CreateSocket ( IpAddressFamily family , SocketType socketType , ProtocolType protocolType , bool dualMode ) ;
2017-05-25 15:00:14 +02:00
Stream CreateNetworkStream ( ISocket socket , bool ownsSocket ) ;
2016-11-08 19:44:23 +01:00
}
public enum SocketType
{
Stream
}
public enum ProtocolType
{
Tcp
}
2016-10-30 00:22:20 +02:00
}