diff options
Diffstat (limited to 'MediaBrowser.Model')
| -rw-r--r-- | MediaBrowser.Model/MediaBrowser.Model.csproj | 4 | ||||
| -rw-r--r-- | MediaBrowser.Model/Net/IAcceptSocket.cs | 28 | ||||
| -rw-r--r-- | MediaBrowser.Model/Net/ISocket.cs | 38 | ||||
| -rw-r--r-- | MediaBrowser.Model/Net/ISocketFactory.cs | 16 | ||||
| -rw-r--r-- | MediaBrowser.Model/Net/IUdpSocket.cs | 28 |
5 files changed, 58 insertions, 56 deletions
diff --git a/MediaBrowser.Model/MediaBrowser.Model.csproj b/MediaBrowser.Model/MediaBrowser.Model.csproj index b796effa1..67a04c5a1 100644 --- a/MediaBrowser.Model/MediaBrowser.Model.csproj +++ b/MediaBrowser.Model/MediaBrowser.Model.csproj @@ -137,9 +137,9 @@ <Compile Include="Dto\NameValuePair.cs" /> <Compile Include="Logging\IConsoleLogger.cs" /> <Compile Include="Net\IpEndPointInfo.cs" /> - <Compile Include="Net\ISocket.cs" /> + <Compile Include="Net\IAcceptSocket.cs" /> <Compile Include="Net\ISocketFactory.cs" /> - <Compile Include="Net\IUdpSocket.cs" /> + <Compile Include="Net\ISocket.cs" /> <Compile Include="Net\SocketReceiveResult.cs" /> <Compile Include="Services\IHttpResult.cs" /> <Compile Include="Social\ISharingRepository.cs" /> diff --git a/MediaBrowser.Model/Net/IAcceptSocket.cs b/MediaBrowser.Model/Net/IAcceptSocket.cs new file mode 100644 index 000000000..0467129c0 --- /dev/null +++ b/MediaBrowser.Model/Net/IAcceptSocket.cs @@ -0,0 +1,28 @@ +using System; + +namespace MediaBrowser.Model.Net +{ + public interface IAcceptSocket : IDisposable + { + bool DualMode { get; } + IpEndPointInfo LocalEndPoint { get; } + IpEndPointInfo RemoteEndPoint { get; } + void Close(); + void Shutdown(bool both); + void Listen(int backlog); + void Bind(IpEndPointInfo endpoint); + + void StartAccept(Action<IAcceptSocket> onAccept, Func<bool> isClosed); + } + + public class SocketCreateException : Exception + { + public SocketCreateException(string errorCode, Exception originalException) + : base(errorCode, originalException) + { + ErrorCode = errorCode; + } + + public string ErrorCode { get; private set; } + } +} diff --git a/MediaBrowser.Model/Net/ISocket.cs b/MediaBrowser.Model/Net/ISocket.cs index aed35bce8..90070b128 100644 --- a/MediaBrowser.Model/Net/ISocket.cs +++ b/MediaBrowser.Model/Net/ISocket.cs @@ -1,28 +1,28 @@ using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +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 { - bool DualMode { get; } - IpEndPointInfo LocalEndPoint { get; } - IpEndPointInfo RemoteEndPoint { get; } - void Close(); - void Shutdown(bool both); - void Listen(int backlog); - void Bind(IpEndPointInfo endpoint); + IpAddressInfo LocalIPAddress { get; } - void StartAccept(Action<ISocket> onAccept, Func<bool> isClosed); - } - - public class SocketCreateException : Exception - { - public SocketCreateException(string errorCode, Exception originalException) - : base(errorCode, originalException) - { - ErrorCode = errorCode; - } + /// <summary> + /// Waits for and returns the next UDP message sent to this socket (uni or multicast). + /// </summary> + /// <returns></returns> + Task<SocketReceiveResult> ReceiveAsync(CancellationToken cancellationToken); - public string ErrorCode { get; private set; } + /// <summary> + /// Sends a UDP message to a particular end point (uni or multicast). + /// </summary> + Task SendAsync(byte[] buffer, int bytes, IpEndPointInfo endPoint, CancellationToken cancellationToken); } -} +}
\ No newline at end of file diff --git a/MediaBrowser.Model/Net/ISocketFactory.cs b/MediaBrowser.Model/Net/ISocketFactory.cs index ac406e7f1..e4ef9f6d4 100644 --- a/MediaBrowser.Model/Net/ISocketFactory.cs +++ b/MediaBrowser.Model/Net/ISocketFactory.cs @@ -2,7 +2,7 @@ namespace MediaBrowser.Model.Net { /// <summary> - /// Implemented by components that can create a platform specific UDP socket implementation, and wrap it in the cross platform <see cref="IUdpSocket"/> interface. + /// Implemented by components that can create a platform specific UDP socket implementation, and wrap it in the cross platform <see cref="ISocket"/> interface. /// </summary> public interface ISocketFactory { @@ -11,13 +11,15 @@ namespace MediaBrowser.Model.Net /// Createa a new unicast socket using the specified local port number. /// </summary> /// <param name="localPort">The local port to bind to.</param> - /// <returns>A <see cref="IUdpSocket"/> implementation.</returns> - IUdpSocket CreateUdpSocket(int localPort); + /// <returns>A <see cref="ISocket"/> implementation.</returns> + ISocket CreateUdpSocket(int localPort); + + ISocket CreateTcpSocket(IpAddressInfo remoteAddress, int remotePort); /// <summary> /// Createa a new unicast socket using the specified local port number. /// </summary> - IUdpSocket CreateSsdpUdpSocket(IpAddressInfo localIp, int localPort); + ISocket CreateSsdpUdpSocket(IpAddressInfo localIp, int localPort); /// <summary> /// Createa a new multicast socket using the specified multicast IP address, multicast time to live and local port. @@ -25,10 +27,10 @@ namespace MediaBrowser.Model.Net /// <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> - /// <returns>A <see cref="IUdpSocket"/> implementation.</returns> - IUdpSocket CreateUdpMulticastSocket(string ipAddress, int multicastTimeToLive, int localPort); + /// <returns>A <see cref="ISocket"/> implementation.</returns> + ISocket CreateUdpMulticastSocket(string ipAddress, int multicastTimeToLive, int localPort); - ISocket CreateSocket(IpAddressFamily family, SocketType socketType, ProtocolType protocolType, bool dualMode); + IAcceptSocket CreateAcceptSocket(IpAddressFamily family, SocketType socketType, ProtocolType protocolType, bool dualMode); } public enum SocketType diff --git a/MediaBrowser.Model/Net/IUdpSocket.cs b/MediaBrowser.Model/Net/IUdpSocket.cs deleted file mode 100644 index 76793f4a6..000000000 --- a/MediaBrowser.Model/Net/IUdpSocket.cs +++ /dev/null @@ -1,28 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -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 IUdpSocket : IDisposable - { - IpAddressInfo LocalIPAddress { get; } - - /// <summary> - /// Waits for and returns the next UDP message sent to this socket (uni or multicast). - /// </summary> - /// <returns></returns> - Task<SocketReceiveResult> ReceiveAsync(); - - /// <summary> - /// Sends a UDP message to a particular end point (uni or multicast). - /// </summary> - Task SendAsync(byte[] buffer, int bytes, IpEndPointInfo endPoint, CancellationToken cancellationToken); - } -}
\ No newline at end of file |
