aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Model/Net
diff options
context:
space:
mode:
authorLuke <luke.pulverenti@gmail.com>2016-11-08 14:55:32 -0500
committerGitHub <noreply@github.com>2016-11-08 14:55:32 -0500
commit82c46a84e4ce7419a92e6c5674de92d69b6ae11a (patch)
treec7263a8e6aaf43680a2de2d3ae00be15be6cd1ad /MediaBrowser.Model/Net
parenta86e9fa73dd159db89efd2ae3e206f45a53c784c (diff)
parente8c70da2b6044243d8352af8358dd701afe570e5 (diff)
Merge pull request #2277 from MediaBrowser/dev
Dev
Diffstat (limited to 'MediaBrowser.Model/Net')
-rw-r--r--MediaBrowser.Model/Net/ISocket.cs16
-rw-r--r--MediaBrowser.Model/Net/ISocketFactory.cs14
-rw-r--r--MediaBrowser.Model/Net/IpAddressInfo.cs29
-rw-r--r--MediaBrowser.Model/Net/IpEndPointInfo.cs14
4 files changed, 70 insertions, 3 deletions
diff --git a/MediaBrowser.Model/Net/ISocket.cs b/MediaBrowser.Model/Net/ISocket.cs
new file mode 100644
index 000000000..371fbc567
--- /dev/null
+++ b/MediaBrowser.Model/Net/ISocket.cs
@@ -0,0 +1,16 @@
+using System;
+
+namespace MediaBrowser.Model.Net
+{
+ public interface ISocket : IDisposable
+ {
+ IpEndPointInfo LocalEndPoint { get; }
+ IpEndPointInfo RemoteEndPoint { get; }
+ void Close();
+ void Shutdown(bool both);
+ void Listen(int backlog);
+ void Bind(IpEndPointInfo endpoint);
+
+ void StartAccept(Action<ISocket> onAccept, Func<bool> isClosed);
+ }
+}
diff --git a/MediaBrowser.Model/Net/ISocketFactory.cs b/MediaBrowser.Model/Net/ISocketFactory.cs
index 3f1ddf84f..599292ddf 100644
--- a/MediaBrowser.Model/Net/ISocketFactory.cs
+++ b/MediaBrowser.Model/Net/ISocketFactory.cs
@@ -27,5 +27,17 @@ namespace MediaBrowser.Model.Net
/// <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);
- }
+
+ ISocket CreateSocket(IpAddressFamily family, SocketType socketType, ProtocolType protocolType, bool dualMode);
+ }
+
+ public enum SocketType
+ {
+ Stream
+ }
+
+ public enum ProtocolType
+ {
+ Tcp
+ }
}
diff --git a/MediaBrowser.Model/Net/IpAddressInfo.cs b/MediaBrowser.Model/Net/IpAddressInfo.cs
index b48347d1d..00a16c03d 100644
--- a/MediaBrowser.Model/Net/IpAddressInfo.cs
+++ b/MediaBrowser.Model/Net/IpAddressInfo.cs
@@ -4,12 +4,39 @@ namespace MediaBrowser.Model.Net
{
public class IpAddressInfo
{
+ public static IpAddressInfo Any = new IpAddressInfo("0.0.0.0", IpAddressFamily.InterNetwork);
+ public static IpAddressInfo IPv6Any = new IpAddressInfo("00000000000000000000", IpAddressFamily.InterNetworkV6);
+ public static IpAddressInfo Loopback = new IpAddressInfo("127.0.0.1", IpAddressFamily.InterNetwork);
+ public static IpAddressInfo IPv6Loopback = new IpAddressInfo("::1", IpAddressFamily.InterNetworkV6);
+
public string Address { get; set; }
- public bool IsIpv6 { get; set; }
+ public IpAddressFamily AddressFamily { get; set; }
+
+ public IpAddressInfo()
+ {
+
+ }
+
+ public IpAddressInfo(string address, IpAddressFamily addressFamily)
+ {
+ Address = address;
+ AddressFamily = addressFamily;
+ }
+
+ public bool Equals(IpAddressInfo address)
+ {
+ return string.Equals(address.Address, Address, StringComparison.OrdinalIgnoreCase);
+ }
public override String ToString()
{
return Address;
}
}
+
+ public enum IpAddressFamily
+ {
+ InterNetwork,
+ InterNetworkV6
+ }
}
diff --git a/MediaBrowser.Model/Net/IpEndPointInfo.cs b/MediaBrowser.Model/Net/IpEndPointInfo.cs
index 5fd331a16..b5cadc429 100644
--- a/MediaBrowser.Model/Net/IpEndPointInfo.cs
+++ b/MediaBrowser.Model/Net/IpEndPointInfo.cs
@@ -1,4 +1,5 @@
using System;
+using System.Globalization;
namespace MediaBrowser.Model.Net
{
@@ -8,11 +9,22 @@ namespace MediaBrowser.Model.Net
public int Port { get; set; }
+ public IpEndPointInfo()
+ {
+
+ }
+
+ public IpEndPointInfo(IpAddressInfo address, int port)
+ {
+ IpAddress = address;
+ Port = port;
+ }
+
public override string ToString()
{
var ipAddresString = IpAddress == null ? string.Empty : IpAddress.ToString();
- return ipAddresString + ":" + this.Port.ToString();
+ return ipAddresString + ":" + Port.ToString(CultureInfo.InvariantCulture);
}
}
}