diff --git a/ZeroLevel.UnitTests/CollectionsTests.cs b/ZeroLevel.UnitTests/CollectionsTests.cs index 9625cc2..ad4a77a 100644 --- a/ZeroLevel.UnitTests/CollectionsTests.cs +++ b/ZeroLevel.UnitTests/CollectionsTests.cs @@ -86,5 +86,33 @@ namespace ZeroLevel.CollectionUnitTests Assert.True(fix.Count == 2); Assert.True(CollectionComparsionExtensions.OrderingEquals(fix.Dump().ToArray(), new long[] { 4, 5 })); } + + [Fact] + public void ChunkifyTest() + { + // Arrange + var arr = new long[] { 1, 2, 3, 4, 5, 6, 7, 8, 9 }; + var empty_arr = new long[0]; + + // Act + var empty_chunks = empty_arr.Chunkify(3).ToArray(); + var chunks_2 = arr.Chunkify(2).ToArray(); + var chunks_3 = arr.Chunkify(3).ToArray(); + + // Assert + Assert.True(empty_chunks.Length == 0); + Assert.True(chunks_2.Length == 5); + Assert.True(chunks_3.Length == 3); + + Assert.True(CollectionComparsionExtensions.OrderingEquals(chunks_3[0], new long[] { 1, 2, 3 })); + Assert.True(CollectionComparsionExtensions.OrderingEquals(chunks_3[1], new long[] { 4, 5, 6 })); + Assert.True(CollectionComparsionExtensions.OrderingEquals(chunks_3[2], new long[] { 7, 8, 9 })); + + Assert.True(CollectionComparsionExtensions.OrderingEquals(chunks_2[0], new long[] { 1, 2 })); + Assert.True(CollectionComparsionExtensions.OrderingEquals(chunks_2[1], new long[] { 3, 4 })); + Assert.True(CollectionComparsionExtensions.OrderingEquals(chunks_2[2], new long[] { 5, 6 })); + Assert.True(CollectionComparsionExtensions.OrderingEquals(chunks_2[3], new long[] { 7, 8 })); + Assert.True(CollectionComparsionExtensions.OrderingEquals(chunks_2[4], new long[] { 9 })); + } } } diff --git a/ZeroLevel/DataStructures/SparceVector.cs b/ZeroLevel/DataStructures/SparceVector.cs index fc11f69..80ab0d8 100644 --- a/ZeroLevel/DataStructures/SparceVector.cs +++ b/ZeroLevel/DataStructures/SparceVector.cs @@ -15,8 +15,6 @@ namespace ZeroLevel.DataStructures private double[] values; private double power; - - public SparceVector() { indexes = EmptyIndexes; diff --git a/ZeroLevel/Services/Extensions/LinqExtension.cs b/ZeroLevel/Services/Extensions/LinqExtension.cs index 863cf76..c305db9 100644 --- a/ZeroLevel/Services/Extensions/LinqExtension.cs +++ b/ZeroLevel/Services/Extensions/LinqExtension.cs @@ -71,10 +71,24 @@ namespace System.Linq { throw new ArgumentException("chunkSize must be greater than 0."); } - while (source.Any()) + T[] arr = new T[size]; + int index = 0; + foreach (var obj in source) { - yield return source.Take(size); - source = source.Skip(size); + arr[index] = obj; + index++; + if (index >= size) + { + yield return arr; + index = 0; + arr = new T[size]; + } + } + if (index > 0) + { + var narr = new T[index]; + Array.Copy(arr, narr, index); + yield return narr; } } } diff --git a/ZeroLevel/Services/FileSystem/PeriodicFileSystemWatcher.cs b/ZeroLevel/Services/FileSystem/PeriodicFileSystemWatcher.cs index 0dccc52..b56fc82 100644 --- a/ZeroLevel/Services/FileSystem/PeriodicFileSystemWatcher.cs +++ b/ZeroLevel/Services/FileSystem/PeriodicFileSystemWatcher.cs @@ -89,7 +89,7 @@ namespace ZeroLevel.Services.FileSystem /// /// Moving a file to a temporary directory /// - public string MoveToTemporary(string from) + private string MoveToTemporary(string from) { if (from == null) { @@ -139,7 +139,7 @@ namespace ZeroLevel.Services.FileSystem /// /// Getting a list of files from the input directory /// - public string[] GetFilesFromSource() + private string[] GetFilesFromSource() { string[] files = Directory.GetFiles(_sourceFolder, "*.*", SearchOption.TopDirectoryOnly); Array.Sort(files, FileNameSortCompare); diff --git a/ZeroLevel/Services/Network/BaseSocket.cs b/ZeroLevel/Services/Network/BaseSocket.cs index e1f04b2..f690363 100644 --- a/ZeroLevel/Services/Network/BaseSocket.cs +++ b/ZeroLevel/Services/Network/BaseSocket.cs @@ -26,12 +26,12 @@ namespace ZeroLevel.Network /// /// If during the specified period there was no network activity, send a ping-request /// - internal const long HEARTBEAT_PING_PERIOD_TICKS = 1500 * TimeSpan.TicksPerMillisecond; + internal const long HEARTBEAT_PING_PERIOD_TICKS = 3000 * TimeSpan.TicksPerMillisecond; /// /// Connection check period /// - internal const int MINIMUM_HEARTBEAT_UPDATE_PERIOD_MS = 7500; + internal const int MINIMUM_HEARTBEAT_UPDATE_PERIOD_MS = 15000; /// /// The period of the request, after which it is considered unsuccessful diff --git a/ZeroLevel/ZeroLevel.csproj b/ZeroLevel/ZeroLevel.csproj index 0b17998..742fff9 100644 --- a/ZeroLevel/ZeroLevel.csproj +++ b/ZeroLevel/ZeroLevel.csproj @@ -6,7 +6,7 @@ ogoun ogoun - 3.3.4.0 + 3.3.4.2 Refactoring https://github.com/ogoun/Zero/wiki Copyright Ogoun 2020 @@ -14,8 +14,8 @@ https://github.com/ogoun/Zero GitHub - 3.3.4 - 3.3.4.1 + 3.3.4.2 + 3.3.4.2 AnyCPU;x64 zero.png