pull/1/head
Ogoun 5 years ago
parent 446a2ecbc4
commit 9aded11788

@ -1,4 +1,4 @@
<Project Sdk="Microsoft.NET.Sdk"> <Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup> <PropertyGroup>
<OutputType>Exe</OutputType> <OutputType>Exe</OutputType>
@ -6,7 +6,7 @@
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="System.Data.SQLite.Core" Version="1.0.112" /> <PackageReference Include="System.Data.SQLite.Core" Version="1.0.112.1" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>

@ -19,7 +19,7 @@
<ItemGroup> <ItemGroup>
<PackageReference Include="System.Data.Common" Version="4.3.0" /> <PackageReference Include="System.Data.Common" Version="4.3.0" />
<PackageReference Include="System.Data.SqlClient" Version="4.8.0" /> <PackageReference Include="System.Data.SqlClient" Version="4.8.1" />
<PackageReference Include="System.Security.Permissions" Version="4.7.0" /> <PackageReference Include="System.Security.Permissions" Version="4.7.0" />
</ItemGroup> </ItemGroup>

@ -1,4 +1,4 @@
<Project Sdk="Microsoft.NET.Sdk"> <Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup> <PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework> <TargetFramework>netstandard2.0</TargetFramework>
@ -14,8 +14,8 @@ Based on System.Data.SQLite.Core</Description>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="System.Data.SQLite.Core" Version="1.0.112" /> <PackageReference Include="System.Data.SQLite.Core" Version="1.0.112.1" />
<PackageReference Include="ZeroLevel" Version="3.1.9" /> <PackageReference Include="ZeroLevel" Version="3.3.2" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>

@ -122,6 +122,7 @@ namespace ZeroLevel.Serialization
public void SerializeIPAddress() public void SerializeIPAddress()
{ {
var comparator = new Func<IPAddress, IPAddress, bool>((left, right) => NetUtils.Compare(left, right) == 0); var comparator = new Func<IPAddress, IPAddress, bool>((left, right) => NetUtils.Compare(left, right) == 0);
MakePrimitiveTest<IPAddress>(null, comparator);
MakePrimitiveTest<IPAddress>(IPAddress.Any, comparator); MakePrimitiveTest<IPAddress>(IPAddress.Any, comparator);
MakePrimitiveTest<IPAddress>(IPAddress.Broadcast, comparator); MakePrimitiveTest<IPAddress>(IPAddress.Broadcast, comparator);
MakePrimitiveTest<IPAddress>(IPAddress.IPv6Any, comparator); MakePrimitiveTest<IPAddress>(IPAddress.IPv6Any, comparator);
@ -136,6 +137,7 @@ namespace ZeroLevel.Serialization
public void SerializeIPEndPoint() public void SerializeIPEndPoint()
{ {
var comparator = new Func<IPEndPoint, IPEndPoint, bool>((left, right) => NetUtils.Compare(left, right) == 0); var comparator = new Func<IPEndPoint, IPEndPoint, bool>((left, right) => NetUtils.Compare(left, right) == 0);
MakePrimitiveTest<IPEndPoint>(null, comparator);
MakePrimitiveTest<IPEndPoint>(new IPEndPoint(IPAddress.Any, 1), comparator); MakePrimitiveTest<IPEndPoint>(new IPEndPoint(IPAddress.Any, 1), comparator);
MakePrimitiveTest<IPEndPoint>(new IPEndPoint(IPAddress.Broadcast, 600), comparator); MakePrimitiveTest<IPEndPoint>(new IPEndPoint(IPAddress.Broadcast, 600), comparator);
MakePrimitiveTest<IPEndPoint>(new IPEndPoint(IPAddress.IPv6Any, IPEndPoint.MaxPort), comparator); MakePrimitiveTest<IPEndPoint>(new IPEndPoint(IPAddress.IPv6Any, IPEndPoint.MaxPort), comparator);

@ -7,7 +7,7 @@
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.4.0" /> <PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.5.0" />
<PackageReference Include="xunit" Version="2.4.1" /> <PackageReference Include="xunit" Version="2.4.1" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.1"> <PackageReference Include="xunit.runner.visualstudio" Version="2.4.1">
<PrivateAssets>all</PrivateAssets> <PrivateAssets>all</PrivateAssets>

@ -13,6 +13,11 @@ namespace ZeroLevel.Network
void Set(string key, string type, string group, IPEndPoint endpoint); void Set(string key, string type, string group, IPEndPoint endpoint);
void Set(string key, string type, string group, IEnumerable<IPEndPoint> endpoints); void Set(string key, string type, string group, IEnumerable<IPEndPoint> endpoints);
bool ContainsKey(string key);
bool ContainsType(string type);
bool ContainsGroup(string group);
void Remove(string key);
void Remove(IPEndPoint endpoint); void Remove(IPEndPoint endpoint);
IEnumerable<KeyValuePair<string, IPEndPoint>> GetAll(); IEnumerable<KeyValuePair<string, IPEndPoint>> GetAll();

@ -69,7 +69,7 @@ namespace ZeroLevel.Network
} }
catch (Exception ex) catch (Exception ex)
{ {
Log.SystemError(ex, $"[SocketClient.ctor] connection fault. Endpoint: {Endpoint.Address}:{Endpoint.Port}"); Log.SystemError(ex, $"[SocketClient.ctor] connection fault. Endpoint: {ep.Address}:{ep.Port}");
Broken(); Broken();
return; return;
} }

@ -36,6 +36,7 @@ namespace ZeroLevel.Network
public static bool TestConnection(IPEndPoint endpoint, int timeout = 100) public static bool TestConnection(IPEndPoint endpoint, int timeout = 100)
{ {
if (endpoint == null) return false;
using (var socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)) using (var socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp))
{ {
socket.SetIPProtectionLevel(IPProtectionLevel.Unrestricted); socket.SetIPProtectionLevel(IPProtectionLevel.Unrestricted);
@ -72,6 +73,10 @@ namespace ZeroLevel.Network
public static int Compare(this IPEndPoint x, IPEndPoint y) public static int Compare(this IPEndPoint x, IPEndPoint y)
{ {
if (x == null && y == null) return 0;
if (x == null) return 1;
if (y == null) return -1;
var xx = x.Address.ToString(); var xx = x.Address.ToString();
var yy = y.Address.ToString(); var yy = y.Address.ToString();
var result = string.CompareOrdinal(xx, yy); var result = string.CompareOrdinal(xx, yy);
@ -80,6 +85,10 @@ namespace ZeroLevel.Network
public static int Compare(this IPAddress x, IPAddress y) public static int Compare(this IPAddress x, IPAddress y)
{ {
if (x == null && y == null) return 0;
if (x == null) return 1;
if (y == null) return -1;
var xx = x.ToString(); var xx = x.ToString();
var yy = y.ToString(); var yy = y.ToString();
return string.CompareOrdinal(xx, yy); return string.CompareOrdinal(xx, yy);
@ -87,6 +96,8 @@ namespace ZeroLevel.Network
public static IPEndPoint CreateIPEndPoint(string endPoint) public static IPEndPoint CreateIPEndPoint(string endPoint)
{ {
if (string.IsNullOrWhiteSpace(endPoint)) return null;
string[] ep = endPoint.Split(':'); string[] ep = endPoint.Split(':');
if (ep.Length < 2) throw new FormatException("Invalid endpoint format"); if (ep.Length < 2) throw new FormatException("Invalid endpoint format");
IPAddress ip; IPAddress ip;

@ -228,6 +228,24 @@ namespace ZeroLevel.Network
} }
} }
public bool ContainsKey(string key) => _tableByKey.ContainsKey(key);
public bool ContainsType(string type) => _tableByTypes.ContainsKey(type);
public bool ContainsGroup(string group) => _tableByGroups.ContainsKey(group);
public void Remove(string key)
{
if (_tableByKey.ContainsKey(key))
{
var eps = _tableByKey[key].Source.ToList();
foreach (var ep in eps)
{
RemoveLocked(ep);
}
}
}
public void Remove(IPEndPoint endpoint) public void Remove(IPEndPoint endpoint)
{ {
_lock.EnterWriteLock(); _lock.EnterWriteLock();

@ -203,15 +203,25 @@ namespace ZeroLevel.Services.Serialization
public IPAddress ReadIP() public IPAddress ReadIP()
{ {
var addr = ReadBytes(); var exists = ReadByte();
return new IPAddress(addr); if (exists == 1)
{
var addr = ReadBytes();
return new IPAddress(addr);
}
return null;
} }
public IPEndPoint ReadIPEndpoint() public IPEndPoint ReadIPEndpoint()
{ {
var addr = ReadIP(); var exists = ReadByte();
var port = ReadInt32(); if (exists == 1)
return new IPEndPoint(addr, port); {
var addr = ReadIP();
var port = ReadInt32();
return new IPEndPoint(addr, port);
}
return null;
} }
/// <summary> /// <summary>

@ -182,13 +182,29 @@ namespace ZeroLevel.Services.Serialization
public void WriteIP(IPAddress ip) public void WriteIP(IPAddress ip)
{ {
WriteBytes(ip.GetAddressBytes()); if (ip == null)
{
WriteByte(0);
}
else
{
WriteByte(1);
WriteBytes(ip.GetAddressBytes());
}
} }
public void WriteIPEndpoint(IPEndPoint endpoint) public void WriteIPEndpoint(IPEndPoint endpoint)
{ {
WriteIP(endpoint.Address); if (endpoint == null)
WriteInt32(endpoint.Port); {
WriteByte(0);
}
else
{
WriteByte(1);
WriteIP(endpoint.Address);
WriteInt32(endpoint.Port);
}
} }
public byte[] Complete() public byte[] Complete()

@ -37,11 +37,11 @@
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="System.Buffers" Version="4.5.0" /> <PackageReference Include="System.Buffers" Version="4.5.1" />
<PackageReference Include="System.Memory" Version="4.5.3" /> <PackageReference Include="System.Memory" Version="4.5.4" />
<PackageReference Include="System.Runtime.CompilerServices.Unsafe" Version="4.7.0" /> <PackageReference Include="System.Runtime.CompilerServices.Unsafe" Version="4.7.1" />
<PackageReference Include="System.ServiceProcess.ServiceController" Version="4.7.0" /> <PackageReference Include="System.ServiceProcess.ServiceController" Version="4.7.0" />
<PackageReference Include="System.Threading.Tasks.Extensions" Version="4.5.3" /> <PackageReference Include="System.Threading.Tasks.Extensions" Version="4.5.4" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>

Loading…
Cancel
Save

Powered by TurnKey Linux.