aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Model/Net
diff options
context:
space:
mode:
authorLuke Pulverenti <luke.pulverenti@gmail.com>2017-03-02 15:50:09 -0500
committerLuke Pulverenti <luke.pulverenti@gmail.com>2017-03-02 15:50:09 -0500
commit9776ca09db59a1e382045a072813a29cf07cadb3 (patch)
treebea754fb9af1d076cdd20bdf5722fdc0d77ec27d /MediaBrowser.Model/Net
parent9f7ee6d34c7e5137c6740a2c3c428f60a4375ba9 (diff)
update socket interfaces
Diffstat (limited to 'MediaBrowser.Model/Net')
-rw-r--r--MediaBrowser.Model/Net/IAcceptSocket.cs28
-rw-r--r--MediaBrowser.Model/Net/ISocket.cs38
-rw-r--r--MediaBrowser.Model/Net/ISocketFactory.cs16
-rw-r--r--MediaBrowser.Model/Net/IUdpSocket.cs28
4 files changed, 56 insertions, 54 deletions
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