diff --git a/ConnectionTest/Client/Client.csproj b/ConnectionTest/Client/Client.csproj
index 4a3a678..7f1e03c 100644
--- a/ConnectionTest/Client/Client.csproj
+++ b/ConnectionTest/Client/Client.csproj
@@ -3,7 +3,7 @@
Exe
netcoreapp3.1
- AnyCPU;x64
+ AnyCPU;x64;x86
diff --git a/ConnectionTest/Server/Server.csproj b/ConnectionTest/Server/Server.csproj
index 4a3a678..7f1e03c 100644
--- a/ConnectionTest/Server/Server.csproj
+++ b/ConnectionTest/Server/Server.csproj
@@ -3,7 +3,7 @@
Exe
netcoreapp3.1
- AnyCPU;x64
+ AnyCPU;x64;x86
diff --git a/FileTransferTest/FileTransferClient/FileTransferClient.csproj b/FileTransferTest/FileTransferClient/FileTransferClient.csproj
index 22d48dd..68fd58d 100644
--- a/FileTransferTest/FileTransferClient/FileTransferClient.csproj
+++ b/FileTransferTest/FileTransferClient/FileTransferClient.csproj
@@ -57,6 +57,26 @@
MinimumRecommendedRules.ruleset
true
+
+ true
+ bin\x86\Debug\
+ DEBUG;TRACE
+ full
+ x86
+ 7.3
+ prompt
+ true
+
+
+ bin\x86\Release\
+ TRACE
+ true
+ pdbonly
+ x86
+ 7.3
+ prompt
+ true
+
diff --git a/FileTransferTest/FileTransferServer/FileTransferServer.csproj b/FileTransferTest/FileTransferServer/FileTransferServer.csproj
index 0580d2c..5aeeb44 100644
--- a/FileTransferTest/FileTransferServer/FileTransferServer.csproj
+++ b/FileTransferTest/FileTransferServer/FileTransferServer.csproj
@@ -57,6 +57,26 @@
MinimumRecommendedRules.ruleset
true
+
+ true
+ bin\x86\Debug\
+ DEBUG;TRACE
+ full
+ x86
+ 7.3
+ prompt
+ true
+
+
+ bin\x86\Release\
+ TRACE
+ true
+ pdbonly
+ x86
+ 7.3
+ prompt
+ true
+
diff --git a/TestApp/TestApp.csproj b/TestApp/TestApp.csproj
index 87d1d0a..0c6e824 100644
--- a/TestApp/TestApp.csproj
+++ b/TestApp/TestApp.csproj
@@ -3,7 +3,7 @@
Exe
netcoreapp3.0
- AnyCPU;x64
+ AnyCPU;x64;x86
diff --git a/TestPipeLine/Consumer/Consumer.csproj b/TestPipeLine/Consumer/Consumer.csproj
index 1cf4aea..98940e1 100644
--- a/TestPipeLine/Consumer/Consumer.csproj
+++ b/TestPipeLine/Consumer/Consumer.csproj
@@ -55,6 +55,26 @@
MinimumRecommendedRules.ruleset
true
+
+ true
+ bin\x86\Debug\
+ DEBUG;TRACE
+ full
+ x86
+ 7.3
+ prompt
+ true
+
+
+ bin\x86\Release\
+ TRACE
+ true
+ pdbonly
+ x86
+ 7.3
+ prompt
+ true
+
diff --git a/TestPipeLine/Processor/Processor.csproj b/TestPipeLine/Processor/Processor.csproj
index 614d554..d9ab861 100644
--- a/TestPipeLine/Processor/Processor.csproj
+++ b/TestPipeLine/Processor/Processor.csproj
@@ -55,6 +55,26 @@
MinimumRecommendedRules.ruleset
true
+
+ true
+ bin\x86\Debug\
+ DEBUG;TRACE
+ full
+ x86
+ 7.3
+ prompt
+ true
+
+
+ bin\x86\Release\
+ TRACE
+ true
+ pdbonly
+ x86
+ 7.3
+ prompt
+ true
+
diff --git a/TestPipeLine/Source/Source.csproj b/TestPipeLine/Source/Source.csproj
index 519a040..5603f3e 100644
--- a/TestPipeLine/Source/Source.csproj
+++ b/TestPipeLine/Source/Source.csproj
@@ -55,6 +55,26 @@
MinimumRecommendedRules.ruleset
true
+
+ true
+ bin\x86\Debug\
+ DEBUG;TRACE
+ full
+ x86
+ 7.3
+ prompt
+ true
+
+
+ bin\x86\Release\
+ TRACE
+ true
+ pdbonly
+ x86
+ 7.3
+ prompt
+ true
+
diff --git a/TestPipeLine/Watcher/Watcher.csproj b/TestPipeLine/Watcher/Watcher.csproj
index a78a7e0..87e60a7 100644
--- a/TestPipeLine/Watcher/Watcher.csproj
+++ b/TestPipeLine/Watcher/Watcher.csproj
@@ -55,6 +55,26 @@
MinimumRecommendedRules.ruleset
true
+
+ true
+ bin\x86\Debug\
+ DEBUG;TRACE
+ full
+ x86
+ 7.3
+ prompt
+ true
+
+
+ bin\x86\Release\
+ TRACE
+ true
+ pdbonly
+ x86
+ 7.3
+ prompt
+ true
+
diff --git a/ZeroLevel.Discovery/ZeroLevel.Discovery.csproj b/ZeroLevel.Discovery/ZeroLevel.Discovery.csproj
index 8ac8cbd..63bb719 100644
--- a/ZeroLevel.Discovery/ZeroLevel.Discovery.csproj
+++ b/ZeroLevel.Discovery/ZeroLevel.Discovery.csproj
@@ -3,7 +3,7 @@
Exe
netcoreapp3.1
- AnyCPU;x64
+ AnyCPU;x64;x86
diff --git a/ZeroLevel.EventsServer/ZeroLevel.EventsServer.csproj b/ZeroLevel.EventsServer/ZeroLevel.EventsServer.csproj
index 2bc99ac..173541c 100644
--- a/ZeroLevel.EventsServer/ZeroLevel.EventsServer.csproj
+++ b/ZeroLevel.EventsServer/ZeroLevel.EventsServer.csproj
@@ -2,7 +2,7 @@
netstandard2.0
- AnyCPU;x64
+ AnyCPU;x64;x86
diff --git a/ZeroLevel.Logger/ZeroLevel.Logger.csproj b/ZeroLevel.Logger/ZeroLevel.Logger.csproj
index 6361a35..510a3f8 100644
--- a/ZeroLevel.Logger/ZeroLevel.Logger.csproj
+++ b/ZeroLevel.Logger/ZeroLevel.Logger.csproj
@@ -3,7 +3,7 @@
Exe
netcoreapp3.1
- AnyCPU;x64
+ AnyCPU;x64;x86
diff --git a/ZeroLevel.SQL/ZeroLevel.SQL.csproj b/ZeroLevel.SQL/ZeroLevel.SQL.csproj
index a0a71f3..4c1ce21 100644
--- a/ZeroLevel.SQL/ZeroLevel.SQL.csproj
+++ b/ZeroLevel.SQL/ZeroLevel.SQL.csproj
@@ -2,7 +2,7 @@
netstandard2.0
- AnyCPU;x64
+ AnyCPU;x64;x86
Light wrapper over ado.net
ogoun
Copyright Ogoun 2020
diff --git a/ZeroLevel.SqLite/ZeroLevel.SqLite.csproj b/ZeroLevel.SqLite/ZeroLevel.SqLite.csproj
index 1c8b6fb..35966e2 100644
--- a/ZeroLevel.SqLite/ZeroLevel.SqLite.csproj
+++ b/ZeroLevel.SqLite/ZeroLevel.SqLite.csproj
@@ -11,11 +11,12 @@ Based on System.Data.SQLite.Core
https://github.com/ogoun/Zero
zero.png
- AnyCPU;x64
+ AnyCPU;x64;x86
Fix bug
1.0.2.1
1.0.2.1
1.0.2.1
+ Library
diff --git a/ZeroLevel.UnitTests/BloomFilterTest.cs b/ZeroLevel.UnitTests/BloomFilterTest.cs
index f7894b0..7289093 100644
--- a/ZeroLevel.UnitTests/BloomFilterTest.cs
+++ b/ZeroLevel.UnitTests/BloomFilterTest.cs
@@ -30,7 +30,7 @@ namespace ZeroLevel.UnitTests
lines.Add(RandomString(i % 9 + 5));
lines_another.Add(RandomString(i % 9 + 5));
}
- var bloom = new BloomFilter(16536 * 1024, true);
+ var bloom = new BloomFilter(16536 * 2048);
// Act
var sw = new Stopwatch();
sw.Start();
@@ -75,7 +75,7 @@ namespace ZeroLevel.UnitTests
lines.Add(RandomString(i % 9 + 5));
lines_another.Add(RandomString(i % 9 + 5));
}
- var bloom = new HyperBloomBloom(64, 16536 * 1024, true);
+ var bloom = new HyperBloomBloom(16, 16536 * 4096);
// Act
var sw = new Stopwatch();
sw.Start();
diff --git a/ZeroLevel.UnitTests/ZeroLevel.UnitTests.csproj b/ZeroLevel.UnitTests/ZeroLevel.UnitTests.csproj
index 9aac41b..a899d08 100644
--- a/ZeroLevel.UnitTests/ZeroLevel.UnitTests.csproj
+++ b/ZeroLevel.UnitTests/ZeroLevel.UnitTests.csproj
@@ -5,7 +5,7 @@
false
- AnyCPU;x64
+ AnyCPU;x64;x86
diff --git a/ZeroLevel.sln b/ZeroLevel.sln
index 1054288..79474d0 100644
--- a/ZeroLevel.sln
+++ b/ZeroLevel.sln
@@ -69,208 +69,208 @@ Global
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{06C9E60E-D449-41A7-9BF0-A829AAF5D214}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{06C9E60E-D449-41A7-9BF0-A829AAF5D214}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {06C9E60E-D449-41A7-9BF0-A829AAF5D214}.Debug|x64.ActiveCfg = Debug|Any CPU
- {06C9E60E-D449-41A7-9BF0-A829AAF5D214}.Debug|x64.Build.0 = Debug|Any CPU
- {06C9E60E-D449-41A7-9BF0-A829AAF5D214}.Debug|x86.ActiveCfg = Debug|Any CPU
- {06C9E60E-D449-41A7-9BF0-A829AAF5D214}.Debug|x86.Build.0 = Debug|Any CPU
+ {06C9E60E-D449-41A7-9BF0-A829AAF5D214}.Debug|x64.ActiveCfg = Debug|x64
+ {06C9E60E-D449-41A7-9BF0-A829AAF5D214}.Debug|x64.Build.0 = Debug|x64
+ {06C9E60E-D449-41A7-9BF0-A829AAF5D214}.Debug|x86.ActiveCfg = Debug|x86
+ {06C9E60E-D449-41A7-9BF0-A829AAF5D214}.Debug|x86.Build.0 = Debug|x86
{06C9E60E-D449-41A7-9BF0-A829AAF5D214}.Release|Any CPU.ActiveCfg = Release|Any CPU
{06C9E60E-D449-41A7-9BF0-A829AAF5D214}.Release|Any CPU.Build.0 = Release|Any CPU
{06C9E60E-D449-41A7-9BF0-A829AAF5D214}.Release|x64.ActiveCfg = Release|x64
{06C9E60E-D449-41A7-9BF0-A829AAF5D214}.Release|x64.Build.0 = Release|x64
- {06C9E60E-D449-41A7-9BF0-A829AAF5D214}.Release|x86.ActiveCfg = Release|Any CPU
- {06C9E60E-D449-41A7-9BF0-A829AAF5D214}.Release|x86.Build.0 = Release|Any CPU
+ {06C9E60E-D449-41A7-9BF0-A829AAF5D214}.Release|x86.ActiveCfg = Release|x86
+ {06C9E60E-D449-41A7-9BF0-A829AAF5D214}.Release|x86.Build.0 = Release|x86
{E5595DE0-B177-4078-AD10-8D3135014838}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{E5595DE0-B177-4078-AD10-8D3135014838}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {E5595DE0-B177-4078-AD10-8D3135014838}.Debug|x64.ActiveCfg = Debug|Any CPU
- {E5595DE0-B177-4078-AD10-8D3135014838}.Debug|x64.Build.0 = Debug|Any CPU
- {E5595DE0-B177-4078-AD10-8D3135014838}.Debug|x86.ActiveCfg = Debug|Any CPU
- {E5595DE0-B177-4078-AD10-8D3135014838}.Debug|x86.Build.0 = Debug|Any CPU
+ {E5595DE0-B177-4078-AD10-8D3135014838}.Debug|x64.ActiveCfg = Debug|x64
+ {E5595DE0-B177-4078-AD10-8D3135014838}.Debug|x64.Build.0 = Debug|x64
+ {E5595DE0-B177-4078-AD10-8D3135014838}.Debug|x86.ActiveCfg = Debug|x86
+ {E5595DE0-B177-4078-AD10-8D3135014838}.Debug|x86.Build.0 = Debug|x86
{E5595DE0-B177-4078-AD10-8D3135014838}.Release|Any CPU.ActiveCfg = Release|Any CPU
{E5595DE0-B177-4078-AD10-8D3135014838}.Release|Any CPU.Build.0 = Release|Any CPU
{E5595DE0-B177-4078-AD10-8D3135014838}.Release|x64.ActiveCfg = Release|x64
{E5595DE0-B177-4078-AD10-8D3135014838}.Release|x64.Build.0 = Release|x64
- {E5595DE0-B177-4078-AD10-8D3135014838}.Release|x86.ActiveCfg = Release|Any CPU
- {E5595DE0-B177-4078-AD10-8D3135014838}.Release|x86.Build.0 = Release|Any CPU
+ {E5595DE0-B177-4078-AD10-8D3135014838}.Release|x86.ActiveCfg = Release|x86
+ {E5595DE0-B177-4078-AD10-8D3135014838}.Release|x86.Build.0 = Release|x86
{674561F2-A3E2-40E6-8E5B-AD94276AD856}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{674561F2-A3E2-40E6-8E5B-AD94276AD856}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {674561F2-A3E2-40E6-8E5B-AD94276AD856}.Debug|x64.ActiveCfg = Debug|Any CPU
- {674561F2-A3E2-40E6-8E5B-AD94276AD856}.Debug|x64.Build.0 = Debug|Any CPU
- {674561F2-A3E2-40E6-8E5B-AD94276AD856}.Debug|x86.ActiveCfg = Debug|Any CPU
- {674561F2-A3E2-40E6-8E5B-AD94276AD856}.Debug|x86.Build.0 = Debug|Any CPU
+ {674561F2-A3E2-40E6-8E5B-AD94276AD856}.Debug|x64.ActiveCfg = Debug|x64
+ {674561F2-A3E2-40E6-8E5B-AD94276AD856}.Debug|x64.Build.0 = Debug|x64
+ {674561F2-A3E2-40E6-8E5B-AD94276AD856}.Debug|x86.ActiveCfg = Debug|x86
+ {674561F2-A3E2-40E6-8E5B-AD94276AD856}.Debug|x86.Build.0 = Debug|x86
{674561F2-A3E2-40E6-8E5B-AD94276AD856}.Release|Any CPU.ActiveCfg = Release|Any CPU
{674561F2-A3E2-40E6-8E5B-AD94276AD856}.Release|Any CPU.Build.0 = Release|Any CPU
{674561F2-A3E2-40E6-8E5B-AD94276AD856}.Release|x64.ActiveCfg = Release|x64
{674561F2-A3E2-40E6-8E5B-AD94276AD856}.Release|x64.Build.0 = Release|x64
- {674561F2-A3E2-40E6-8E5B-AD94276AD856}.Release|x86.ActiveCfg = Release|Any CPU
- {674561F2-A3E2-40E6-8E5B-AD94276AD856}.Release|x86.Build.0 = Release|Any CPU
+ {674561F2-A3E2-40E6-8E5B-AD94276AD856}.Release|x86.ActiveCfg = Release|x86
+ {674561F2-A3E2-40E6-8E5B-AD94276AD856}.Release|x86.Build.0 = Release|x86
{5CE51CC9-7884-4E21-9D68-2321CA14312E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{5CE51CC9-7884-4E21-9D68-2321CA14312E}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {5CE51CC9-7884-4E21-9D68-2321CA14312E}.Debug|x64.ActiveCfg = Debug|Any CPU
- {5CE51CC9-7884-4E21-9D68-2321CA14312E}.Debug|x64.Build.0 = Debug|Any CPU
- {5CE51CC9-7884-4E21-9D68-2321CA14312E}.Debug|x86.ActiveCfg = Debug|Any CPU
- {5CE51CC9-7884-4E21-9D68-2321CA14312E}.Debug|x86.Build.0 = Debug|Any CPU
+ {5CE51CC9-7884-4E21-9D68-2321CA14312E}.Debug|x64.ActiveCfg = Debug|x64
+ {5CE51CC9-7884-4E21-9D68-2321CA14312E}.Debug|x64.Build.0 = Debug|x64
+ {5CE51CC9-7884-4E21-9D68-2321CA14312E}.Debug|x86.ActiveCfg = Debug|x86
+ {5CE51CC9-7884-4E21-9D68-2321CA14312E}.Debug|x86.Build.0 = Debug|x86
{5CE51CC9-7884-4E21-9D68-2321CA14312E}.Release|Any CPU.ActiveCfg = Release|Any CPU
{5CE51CC9-7884-4E21-9D68-2321CA14312E}.Release|Any CPU.Build.0 = Release|Any CPU
{5CE51CC9-7884-4E21-9D68-2321CA14312E}.Release|x64.ActiveCfg = Release|x64
{5CE51CC9-7884-4E21-9D68-2321CA14312E}.Release|x64.Build.0 = Release|x64
- {5CE51CC9-7884-4E21-9D68-2321CA14312E}.Release|x86.ActiveCfg = Release|Any CPU
- {5CE51CC9-7884-4E21-9D68-2321CA14312E}.Release|x86.Build.0 = Release|Any CPU
+ {5CE51CC9-7884-4E21-9D68-2321CA14312E}.Release|x86.ActiveCfg = Release|x86
+ {5CE51CC9-7884-4E21-9D68-2321CA14312E}.Release|x86.Build.0 = Release|x86
{6E04F32A-FB90-41D2-9059-F37311F813B3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{6E04F32A-FB90-41D2-9059-F37311F813B3}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {6E04F32A-FB90-41D2-9059-F37311F813B3}.Debug|x64.ActiveCfg = Debug|Any CPU
- {6E04F32A-FB90-41D2-9059-F37311F813B3}.Debug|x64.Build.0 = Debug|Any CPU
- {6E04F32A-FB90-41D2-9059-F37311F813B3}.Debug|x86.ActiveCfg = Debug|Any CPU
- {6E04F32A-FB90-41D2-9059-F37311F813B3}.Debug|x86.Build.0 = Debug|Any CPU
+ {6E04F32A-FB90-41D2-9059-F37311F813B3}.Debug|x64.ActiveCfg = Debug|x64
+ {6E04F32A-FB90-41D2-9059-F37311F813B3}.Debug|x64.Build.0 = Debug|x64
+ {6E04F32A-FB90-41D2-9059-F37311F813B3}.Debug|x86.ActiveCfg = Debug|x86
+ {6E04F32A-FB90-41D2-9059-F37311F813B3}.Debug|x86.Build.0 = Debug|x86
{6E04F32A-FB90-41D2-9059-F37311F813B3}.Release|Any CPU.ActiveCfg = Release|Any CPU
{6E04F32A-FB90-41D2-9059-F37311F813B3}.Release|Any CPU.Build.0 = Release|Any CPU
{6E04F32A-FB90-41D2-9059-F37311F813B3}.Release|x64.ActiveCfg = Release|x64
{6E04F32A-FB90-41D2-9059-F37311F813B3}.Release|x64.Build.0 = Release|x64
- {6E04F32A-FB90-41D2-9059-F37311F813B3}.Release|x86.ActiveCfg = Release|Any CPU
- {6E04F32A-FB90-41D2-9059-F37311F813B3}.Release|x86.Build.0 = Release|Any CPU
+ {6E04F32A-FB90-41D2-9059-F37311F813B3}.Release|x86.ActiveCfg = Release|x86
+ {6E04F32A-FB90-41D2-9059-F37311F813B3}.Release|x86.Build.0 = Release|x86
{A1D60994-5744-47D1-B684-C1C0B782998B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A1D60994-5744-47D1-B684-C1C0B782998B}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {A1D60994-5744-47D1-B684-C1C0B782998B}.Debug|x64.ActiveCfg = Debug|Any CPU
- {A1D60994-5744-47D1-B684-C1C0B782998B}.Debug|x64.Build.0 = Debug|Any CPU
- {A1D60994-5744-47D1-B684-C1C0B782998B}.Debug|x86.ActiveCfg = Debug|Any CPU
- {A1D60994-5744-47D1-B684-C1C0B782998B}.Debug|x86.Build.0 = Debug|Any CPU
+ {A1D60994-5744-47D1-B684-C1C0B782998B}.Debug|x64.ActiveCfg = Debug|x64
+ {A1D60994-5744-47D1-B684-C1C0B782998B}.Debug|x64.Build.0 = Debug|x64
+ {A1D60994-5744-47D1-B684-C1C0B782998B}.Debug|x86.ActiveCfg = Debug|x86
+ {A1D60994-5744-47D1-B684-C1C0B782998B}.Debug|x86.Build.0 = Debug|x86
{A1D60994-5744-47D1-B684-C1C0B782998B}.Release|Any CPU.ActiveCfg = Release|Any CPU
{A1D60994-5744-47D1-B684-C1C0B782998B}.Release|Any CPU.Build.0 = Release|Any CPU
{A1D60994-5744-47D1-B684-C1C0B782998B}.Release|x64.ActiveCfg = Release|x64
{A1D60994-5744-47D1-B684-C1C0B782998B}.Release|x64.Build.0 = Release|x64
- {A1D60994-5744-47D1-B684-C1C0B782998B}.Release|x86.ActiveCfg = Release|Any CPU
- {A1D60994-5744-47D1-B684-C1C0B782998B}.Release|x86.Build.0 = Release|Any CPU
+ {A1D60994-5744-47D1-B684-C1C0B782998B}.Release|x86.ActiveCfg = Release|x86
+ {A1D60994-5744-47D1-B684-C1C0B782998B}.Release|x86.Build.0 = Release|x86
{806D0160-A4BF-4881-AF33-308F4FEF8E15}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{806D0160-A4BF-4881-AF33-308F4FEF8E15}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {806D0160-A4BF-4881-AF33-308F4FEF8E15}.Debug|x64.ActiveCfg = Debug|Any CPU
- {806D0160-A4BF-4881-AF33-308F4FEF8E15}.Debug|x64.Build.0 = Debug|Any CPU
- {806D0160-A4BF-4881-AF33-308F4FEF8E15}.Debug|x86.ActiveCfg = Debug|Any CPU
- {806D0160-A4BF-4881-AF33-308F4FEF8E15}.Debug|x86.Build.0 = Debug|Any CPU
+ {806D0160-A4BF-4881-AF33-308F4FEF8E15}.Debug|x64.ActiveCfg = Debug|x64
+ {806D0160-A4BF-4881-AF33-308F4FEF8E15}.Debug|x64.Build.0 = Debug|x64
+ {806D0160-A4BF-4881-AF33-308F4FEF8E15}.Debug|x86.ActiveCfg = Debug|x86
+ {806D0160-A4BF-4881-AF33-308F4FEF8E15}.Debug|x86.Build.0 = Debug|x86
{806D0160-A4BF-4881-AF33-308F4FEF8E15}.Release|Any CPU.ActiveCfg = Release|Any CPU
{806D0160-A4BF-4881-AF33-308F4FEF8E15}.Release|Any CPU.Build.0 = Release|Any CPU
{806D0160-A4BF-4881-AF33-308F4FEF8E15}.Release|x64.ActiveCfg = Release|x64
{806D0160-A4BF-4881-AF33-308F4FEF8E15}.Release|x64.Build.0 = Release|x64
- {806D0160-A4BF-4881-AF33-308F4FEF8E15}.Release|x86.ActiveCfg = Release|Any CPU
- {806D0160-A4BF-4881-AF33-308F4FEF8E15}.Release|x86.Build.0 = Release|Any CPU
+ {806D0160-A4BF-4881-AF33-308F4FEF8E15}.Release|x86.ActiveCfg = Release|x86
+ {806D0160-A4BF-4881-AF33-308F4FEF8E15}.Release|x86.Build.0 = Release|x86
{931DEA89-42D1-4C06-9CB8-A3A0412093D6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{931DEA89-42D1-4C06-9CB8-A3A0412093D6}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {931DEA89-42D1-4C06-9CB8-A3A0412093D6}.Debug|x64.ActiveCfg = Debug|Any CPU
- {931DEA89-42D1-4C06-9CB8-A3A0412093D6}.Debug|x64.Build.0 = Debug|Any CPU
- {931DEA89-42D1-4C06-9CB8-A3A0412093D6}.Debug|x86.ActiveCfg = Debug|Any CPU
- {931DEA89-42D1-4C06-9CB8-A3A0412093D6}.Debug|x86.Build.0 = Debug|Any CPU
+ {931DEA89-42D1-4C06-9CB8-A3A0412093D6}.Debug|x64.ActiveCfg = Debug|x64
+ {931DEA89-42D1-4C06-9CB8-A3A0412093D6}.Debug|x64.Build.0 = Debug|x64
+ {931DEA89-42D1-4C06-9CB8-A3A0412093D6}.Debug|x86.ActiveCfg = Debug|x86
+ {931DEA89-42D1-4C06-9CB8-A3A0412093D6}.Debug|x86.Build.0 = Debug|x86
{931DEA89-42D1-4C06-9CB8-A3A0412093D6}.Release|Any CPU.ActiveCfg = Release|Any CPU
{931DEA89-42D1-4C06-9CB8-A3A0412093D6}.Release|Any CPU.Build.0 = Release|Any CPU
{931DEA89-42D1-4C06-9CB8-A3A0412093D6}.Release|x64.ActiveCfg = Release|x64
{931DEA89-42D1-4C06-9CB8-A3A0412093D6}.Release|x64.Build.0 = Release|x64
- {931DEA89-42D1-4C06-9CB8-A3A0412093D6}.Release|x86.ActiveCfg = Release|Any CPU
- {931DEA89-42D1-4C06-9CB8-A3A0412093D6}.Release|x86.Build.0 = Release|Any CPU
+ {931DEA89-42D1-4C06-9CB8-A3A0412093D6}.Release|x86.ActiveCfg = Release|x86
+ {931DEA89-42D1-4C06-9CB8-A3A0412093D6}.Release|x86.Build.0 = Release|x86
{D25EC1F0-3BD2-409C-8A01-8C8339D5835C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{D25EC1F0-3BD2-409C-8A01-8C8339D5835C}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {D25EC1F0-3BD2-409C-8A01-8C8339D5835C}.Debug|x64.ActiveCfg = Debug|Any CPU
- {D25EC1F0-3BD2-409C-8A01-8C8339D5835C}.Debug|x64.Build.0 = Debug|Any CPU
- {D25EC1F0-3BD2-409C-8A01-8C8339D5835C}.Debug|x86.ActiveCfg = Debug|Any CPU
- {D25EC1F0-3BD2-409C-8A01-8C8339D5835C}.Debug|x86.Build.0 = Debug|Any CPU
+ {D25EC1F0-3BD2-409C-8A01-8C8339D5835C}.Debug|x64.ActiveCfg = Debug|x64
+ {D25EC1F0-3BD2-409C-8A01-8C8339D5835C}.Debug|x64.Build.0 = Debug|x64
+ {D25EC1F0-3BD2-409C-8A01-8C8339D5835C}.Debug|x86.ActiveCfg = Debug|x86
+ {D25EC1F0-3BD2-409C-8A01-8C8339D5835C}.Debug|x86.Build.0 = Debug|x86
{D25EC1F0-3BD2-409C-8A01-8C8339D5835C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{D25EC1F0-3BD2-409C-8A01-8C8339D5835C}.Release|Any CPU.Build.0 = Release|Any CPU
{D25EC1F0-3BD2-409C-8A01-8C8339D5835C}.Release|x64.ActiveCfg = Release|x64
{D25EC1F0-3BD2-409C-8A01-8C8339D5835C}.Release|x64.Build.0 = Release|x64
- {D25EC1F0-3BD2-409C-8A01-8C8339D5835C}.Release|x86.ActiveCfg = Release|Any CPU
- {D25EC1F0-3BD2-409C-8A01-8C8339D5835C}.Release|x86.Build.0 = Release|Any CPU
+ {D25EC1F0-3BD2-409C-8A01-8C8339D5835C}.Release|x86.ActiveCfg = Release|x86
+ {D25EC1F0-3BD2-409C-8A01-8C8339D5835C}.Release|x86.Build.0 = Release|x86
{EECF6EA0-6D9C-4B69-9CA3-23357C04B84C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{EECF6EA0-6D9C-4B69-9CA3-23357C04B84C}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {EECF6EA0-6D9C-4B69-9CA3-23357C04B84C}.Debug|x64.ActiveCfg = Debug|Any CPU
- {EECF6EA0-6D9C-4B69-9CA3-23357C04B84C}.Debug|x64.Build.0 = Debug|Any CPU
- {EECF6EA0-6D9C-4B69-9CA3-23357C04B84C}.Debug|x86.ActiveCfg = Debug|Any CPU
- {EECF6EA0-6D9C-4B69-9CA3-23357C04B84C}.Debug|x86.Build.0 = Debug|Any CPU
+ {EECF6EA0-6D9C-4B69-9CA3-23357C04B84C}.Debug|x64.ActiveCfg = Debug|x64
+ {EECF6EA0-6D9C-4B69-9CA3-23357C04B84C}.Debug|x64.Build.0 = Debug|x64
+ {EECF6EA0-6D9C-4B69-9CA3-23357C04B84C}.Debug|x86.ActiveCfg = Debug|x86
+ {EECF6EA0-6D9C-4B69-9CA3-23357C04B84C}.Debug|x86.Build.0 = Debug|x86
{EECF6EA0-6D9C-4B69-9CA3-23357C04B84C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{EECF6EA0-6D9C-4B69-9CA3-23357C04B84C}.Release|Any CPU.Build.0 = Release|Any CPU
{EECF6EA0-6D9C-4B69-9CA3-23357C04B84C}.Release|x64.ActiveCfg = Release|x64
{EECF6EA0-6D9C-4B69-9CA3-23357C04B84C}.Release|x64.Build.0 = Release|x64
- {EECF6EA0-6D9C-4B69-9CA3-23357C04B84C}.Release|x86.ActiveCfg = Release|Any CPU
- {EECF6EA0-6D9C-4B69-9CA3-23357C04B84C}.Release|x86.Build.0 = Release|Any CPU
+ {EECF6EA0-6D9C-4B69-9CA3-23357C04B84C}.Release|x86.ActiveCfg = Release|x86
+ {EECF6EA0-6D9C-4B69-9CA3-23357C04B84C}.Release|x86.Build.0 = Release|x86
{D1C061DB-3565-43C3-B8F3-628DE4908750}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{D1C061DB-3565-43C3-B8F3-628DE4908750}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {D1C061DB-3565-43C3-B8F3-628DE4908750}.Debug|x64.ActiveCfg = Debug|Any CPU
- {D1C061DB-3565-43C3-B8F3-628DE4908750}.Debug|x64.Build.0 = Debug|Any CPU
- {D1C061DB-3565-43C3-B8F3-628DE4908750}.Debug|x86.ActiveCfg = Debug|Any CPU
- {D1C061DB-3565-43C3-B8F3-628DE4908750}.Debug|x86.Build.0 = Debug|Any CPU
+ {D1C061DB-3565-43C3-B8F3-628DE4908750}.Debug|x64.ActiveCfg = Debug|x64
+ {D1C061DB-3565-43C3-B8F3-628DE4908750}.Debug|x64.Build.0 = Debug|x64
+ {D1C061DB-3565-43C3-B8F3-628DE4908750}.Debug|x86.ActiveCfg = Debug|x86
+ {D1C061DB-3565-43C3-B8F3-628DE4908750}.Debug|x86.Build.0 = Debug|x86
{D1C061DB-3565-43C3-B8F3-628DE4908750}.Release|Any CPU.ActiveCfg = Release|Any CPU
{D1C061DB-3565-43C3-B8F3-628DE4908750}.Release|Any CPU.Build.0 = Release|Any CPU
{D1C061DB-3565-43C3-B8F3-628DE4908750}.Release|x64.ActiveCfg = Release|x64
{D1C061DB-3565-43C3-B8F3-628DE4908750}.Release|x64.Build.0 = Release|x64
- {D1C061DB-3565-43C3-B8F3-628DE4908750}.Release|x86.ActiveCfg = Release|Any CPU
- {D1C061DB-3565-43C3-B8F3-628DE4908750}.Release|x86.Build.0 = Release|Any CPU
+ {D1C061DB-3565-43C3-B8F3-628DE4908750}.Release|x86.ActiveCfg = Release|x86
+ {D1C061DB-3565-43C3-B8F3-628DE4908750}.Release|x86.Build.0 = Release|x86
{5B545DD6-8573-4CDD-B32D-9B0AA2AC2F9A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{5B545DD6-8573-4CDD-B32D-9B0AA2AC2F9A}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {5B545DD6-8573-4CDD-B32D-9B0AA2AC2F9A}.Debug|x64.ActiveCfg = Debug|Any CPU
- {5B545DD6-8573-4CDD-B32D-9B0AA2AC2F9A}.Debug|x64.Build.0 = Debug|Any CPU
- {5B545DD6-8573-4CDD-B32D-9B0AA2AC2F9A}.Debug|x86.ActiveCfg = Debug|Any CPU
- {5B545DD6-8573-4CDD-B32D-9B0AA2AC2F9A}.Debug|x86.Build.0 = Debug|Any CPU
+ {5B545DD6-8573-4CDD-B32D-9B0AA2AC2F9A}.Debug|x64.ActiveCfg = Debug|x64
+ {5B545DD6-8573-4CDD-B32D-9B0AA2AC2F9A}.Debug|x64.Build.0 = Debug|x64
+ {5B545DD6-8573-4CDD-B32D-9B0AA2AC2F9A}.Debug|x86.ActiveCfg = Debug|x86
+ {5B545DD6-8573-4CDD-B32D-9B0AA2AC2F9A}.Debug|x86.Build.0 = Debug|x86
{5B545DD6-8573-4CDD-B32D-9B0AA2AC2F9A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{5B545DD6-8573-4CDD-B32D-9B0AA2AC2F9A}.Release|Any CPU.Build.0 = Release|Any CPU
{5B545DD6-8573-4CDD-B32D-9B0AA2AC2F9A}.Release|x64.ActiveCfg = Release|x64
{5B545DD6-8573-4CDD-B32D-9B0AA2AC2F9A}.Release|x64.Build.0 = Release|x64
- {5B545DD6-8573-4CDD-B32D-9B0AA2AC2F9A}.Release|x86.ActiveCfg = Release|Any CPU
- {5B545DD6-8573-4CDD-B32D-9B0AA2AC2F9A}.Release|x86.Build.0 = Release|Any CPU
+ {5B545DD6-8573-4CDD-B32D-9B0AA2AC2F9A}.Release|x86.ActiveCfg = Release|x86
+ {5B545DD6-8573-4CDD-B32D-9B0AA2AC2F9A}.Release|x86.Build.0 = Release|x86
{04219F58-4D3A-4707-82A8-4DDDC9882969}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{04219F58-4D3A-4707-82A8-4DDDC9882969}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {04219F58-4D3A-4707-82A8-4DDDC9882969}.Debug|x64.ActiveCfg = Debug|Any CPU
- {04219F58-4D3A-4707-82A8-4DDDC9882969}.Debug|x64.Build.0 = Debug|Any CPU
- {04219F58-4D3A-4707-82A8-4DDDC9882969}.Debug|x86.ActiveCfg = Debug|Any CPU
- {04219F58-4D3A-4707-82A8-4DDDC9882969}.Debug|x86.Build.0 = Debug|Any CPU
+ {04219F58-4D3A-4707-82A8-4DDDC9882969}.Debug|x64.ActiveCfg = Debug|x64
+ {04219F58-4D3A-4707-82A8-4DDDC9882969}.Debug|x64.Build.0 = Debug|x64
+ {04219F58-4D3A-4707-82A8-4DDDC9882969}.Debug|x86.ActiveCfg = Debug|x86
+ {04219F58-4D3A-4707-82A8-4DDDC9882969}.Debug|x86.Build.0 = Debug|x86
{04219F58-4D3A-4707-82A8-4DDDC9882969}.Release|Any CPU.ActiveCfg = Release|Any CPU
{04219F58-4D3A-4707-82A8-4DDDC9882969}.Release|Any CPU.Build.0 = Release|Any CPU
{04219F58-4D3A-4707-82A8-4DDDC9882969}.Release|x64.ActiveCfg = Release|x64
{04219F58-4D3A-4707-82A8-4DDDC9882969}.Release|x64.Build.0 = Release|x64
- {04219F58-4D3A-4707-82A8-4DDDC9882969}.Release|x86.ActiveCfg = Release|Any CPU
- {04219F58-4D3A-4707-82A8-4DDDC9882969}.Release|x86.Build.0 = Release|Any CPU
+ {04219F58-4D3A-4707-82A8-4DDDC9882969}.Release|x86.ActiveCfg = Release|x86
+ {04219F58-4D3A-4707-82A8-4DDDC9882969}.Release|x86.Build.0 = Release|x86
{F8B727E1-340D-4096-A784-E570AE13FABC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{F8B727E1-340D-4096-A784-E570AE13FABC}.Debug|Any CPU.Build.0 = Debug|Any CPU
{F8B727E1-340D-4096-A784-E570AE13FABC}.Debug|x64.ActiveCfg = Debug|x64
{F8B727E1-340D-4096-A784-E570AE13FABC}.Debug|x64.Build.0 = Debug|x64
- {F8B727E1-340D-4096-A784-E570AE13FABC}.Debug|x86.ActiveCfg = Debug|Any CPU
- {F8B727E1-340D-4096-A784-E570AE13FABC}.Debug|x86.Build.0 = Debug|Any CPU
+ {F8B727E1-340D-4096-A784-E570AE13FABC}.Debug|x86.ActiveCfg = Debug|x86
+ {F8B727E1-340D-4096-A784-E570AE13FABC}.Debug|x86.Build.0 = Debug|x86
{F8B727E1-340D-4096-A784-E570AE13FABC}.Release|Any CPU.ActiveCfg = Release|Any CPU
{F8B727E1-340D-4096-A784-E570AE13FABC}.Release|Any CPU.Build.0 = Release|Any CPU
{F8B727E1-340D-4096-A784-E570AE13FABC}.Release|x64.ActiveCfg = Release|x64
{F8B727E1-340D-4096-A784-E570AE13FABC}.Release|x64.Build.0 = Release|x64
- {F8B727E1-340D-4096-A784-E570AE13FABC}.Release|x86.ActiveCfg = Release|Any CPU
- {F8B727E1-340D-4096-A784-E570AE13FABC}.Release|x86.Build.0 = Release|Any CPU
+ {F8B727E1-340D-4096-A784-E570AE13FABC}.Release|x86.ActiveCfg = Release|x86
+ {F8B727E1-340D-4096-A784-E570AE13FABC}.Release|x86.Build.0 = Release|x86
{9BF859EE-EF90-4B5B-8576-E26770F2F792}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{9BF859EE-EF90-4B5B-8576-E26770F2F792}.Debug|Any CPU.Build.0 = Debug|Any CPU
{9BF859EE-EF90-4B5B-8576-E26770F2F792}.Debug|x64.ActiveCfg = Debug|x64
{9BF859EE-EF90-4B5B-8576-E26770F2F792}.Debug|x64.Build.0 = Debug|x64
- {9BF859EE-EF90-4B5B-8576-E26770F2F792}.Debug|x86.ActiveCfg = Debug|Any CPU
- {9BF859EE-EF90-4B5B-8576-E26770F2F792}.Debug|x86.Build.0 = Debug|Any CPU
+ {9BF859EE-EF90-4B5B-8576-E26770F2F792}.Debug|x86.ActiveCfg = Debug|x86
+ {9BF859EE-EF90-4B5B-8576-E26770F2F792}.Debug|x86.Build.0 = Debug|x86
{9BF859EE-EF90-4B5B-8576-E26770F2F792}.Release|Any CPU.ActiveCfg = Release|Any CPU
{9BF859EE-EF90-4B5B-8576-E26770F2F792}.Release|Any CPU.Build.0 = Release|Any CPU
{9BF859EE-EF90-4B5B-8576-E26770F2F792}.Release|x64.ActiveCfg = Release|x64
{9BF859EE-EF90-4B5B-8576-E26770F2F792}.Release|x64.Build.0 = Release|x64
- {9BF859EE-EF90-4B5B-8576-E26770F2F792}.Release|x86.ActiveCfg = Release|Any CPU
- {9BF859EE-EF90-4B5B-8576-E26770F2F792}.Release|x86.Build.0 = Release|Any CPU
+ {9BF859EE-EF90-4B5B-8576-E26770F2F792}.Release|x86.ActiveCfg = Release|x86
+ {9BF859EE-EF90-4B5B-8576-E26770F2F792}.Release|x86.Build.0 = Release|x86
{08CDD42E-E324-40A4-88C3-EDD0493AAF84}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{08CDD42E-E324-40A4-88C3-EDD0493AAF84}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {08CDD42E-E324-40A4-88C3-EDD0493AAF84}.Debug|x64.ActiveCfg = Debug|Any CPU
- {08CDD42E-E324-40A4-88C3-EDD0493AAF84}.Debug|x64.Build.0 = Debug|Any CPU
- {08CDD42E-E324-40A4-88C3-EDD0493AAF84}.Debug|x86.ActiveCfg = Debug|Any CPU
- {08CDD42E-E324-40A4-88C3-EDD0493AAF84}.Debug|x86.Build.0 = Debug|Any CPU
+ {08CDD42E-E324-40A4-88C3-EDD0493AAF84}.Debug|x64.ActiveCfg = Debug|x64
+ {08CDD42E-E324-40A4-88C3-EDD0493AAF84}.Debug|x64.Build.0 = Debug|x64
+ {08CDD42E-E324-40A4-88C3-EDD0493AAF84}.Debug|x86.ActiveCfg = Debug|x86
+ {08CDD42E-E324-40A4-88C3-EDD0493AAF84}.Debug|x86.Build.0 = Debug|x86
{08CDD42E-E324-40A4-88C3-EDD0493AAF84}.Release|Any CPU.ActiveCfg = Release|Any CPU
{08CDD42E-E324-40A4-88C3-EDD0493AAF84}.Release|Any CPU.Build.0 = Release|Any CPU
{08CDD42E-E324-40A4-88C3-EDD0493AAF84}.Release|x64.ActiveCfg = Release|x64
{08CDD42E-E324-40A4-88C3-EDD0493AAF84}.Release|x64.Build.0 = Release|x64
- {08CDD42E-E324-40A4-88C3-EDD0493AAF84}.Release|x86.ActiveCfg = Release|Any CPU
- {08CDD42E-E324-40A4-88C3-EDD0493AAF84}.Release|x86.Build.0 = Release|Any CPU
+ {08CDD42E-E324-40A4-88C3-EDD0493AAF84}.Release|x86.ActiveCfg = Release|x86
+ {08CDD42E-E324-40A4-88C3-EDD0493AAF84}.Release|x86.Build.0 = Release|x86
{3496A688-0749-48C2-BD60-ABB42A5C17C9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{3496A688-0749-48C2-BD60-ABB42A5C17C9}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {3496A688-0749-48C2-BD60-ABB42A5C17C9}.Debug|x64.ActiveCfg = Debug|Any CPU
- {3496A688-0749-48C2-BD60-ABB42A5C17C9}.Debug|x64.Build.0 = Debug|Any CPU
- {3496A688-0749-48C2-BD60-ABB42A5C17C9}.Debug|x86.ActiveCfg = Debug|Any CPU
- {3496A688-0749-48C2-BD60-ABB42A5C17C9}.Debug|x86.Build.0 = Debug|Any CPU
+ {3496A688-0749-48C2-BD60-ABB42A5C17C9}.Debug|x64.ActiveCfg = Debug|x64
+ {3496A688-0749-48C2-BD60-ABB42A5C17C9}.Debug|x64.Build.0 = Debug|x64
+ {3496A688-0749-48C2-BD60-ABB42A5C17C9}.Debug|x86.ActiveCfg = Debug|x86
+ {3496A688-0749-48C2-BD60-ABB42A5C17C9}.Debug|x86.Build.0 = Debug|x86
{3496A688-0749-48C2-BD60-ABB42A5C17C9}.Release|Any CPU.ActiveCfg = Release|Any CPU
{3496A688-0749-48C2-BD60-ABB42A5C17C9}.Release|Any CPU.Build.0 = Release|Any CPU
{3496A688-0749-48C2-BD60-ABB42A5C17C9}.Release|x64.ActiveCfg = Release|x64
{3496A688-0749-48C2-BD60-ABB42A5C17C9}.Release|x64.Build.0 = Release|x64
- {3496A688-0749-48C2-BD60-ABB42A5C17C9}.Release|x86.ActiveCfg = Release|Any CPU
- {3496A688-0749-48C2-BD60-ABB42A5C17C9}.Release|x86.Build.0 = Release|Any CPU
+ {3496A688-0749-48C2-BD60-ABB42A5C17C9}.Release|x86.ActiveCfg = Release|x86
+ {3496A688-0749-48C2-BD60-ABB42A5C17C9}.Release|x86.Build.0 = Release|x86
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git a/ZeroLevel/DataStructures/BloomFilter.cs b/ZeroLevel/DataStructures/BloomFilter.cs
index 363c9ea..202ae89 100644
--- a/ZeroLevel/DataStructures/BloomFilter.cs
+++ b/ZeroLevel/DataStructures/BloomFilter.cs
@@ -1,45 +1,61 @@
using System;
using System.Collections;
+using System.IO;
using System.Runtime.CompilerServices;
using ZeroLevel.Services.HashFunctions;
namespace ZeroLevel.DataStructures
{
- ///
- /// Bloom filter implementation, 128 bit
- ///
public class BloomFilter
{
#region Private
private struct HIND
{
- public ulong PrimiryDirect;
- public uint SecondDirect;
- public ulong PrimiryReverse;
- public uint SecondReverse;
+ public int IndexFirst;
+ public int IndexSecond;
+ public int IndexThird;
+ public int IndexReverse;
}
- private readonly BitArray _primary;
- private readonly BitArray _second;
-
- private readonly BitArray _r_primary;
- private readonly BitArray _r_second;
-
- private readonly bool _use_reverse = false;
+ private BitArray _primary;
+ private BitArray _second;
+ private BitArray _third;
+ private BitArray _reverse;
#endregion
- public BloomFilter(int bit_size, bool use_reverse)
+ public BloomFilter(int bit_size)
{
- _use_reverse = use_reverse;
-
+ var diff = bit_size % 8;
+ if (diff != 0)
+ {
+ bit_size += diff;
+ }
_primary = new BitArray(bit_size);
_second = new BitArray(bit_size);
+ _third = new BitArray(bit_size);
+ _reverse = new BitArray(bit_size);
+ }
- if (_use_reverse)
+ private HIND Compute(string line)
+ {
+ var r = Reverse(line);
+ var first = HashMM(line) ^ StringHash.DotNetFullHash(line);
+ var second = HashXX(line) ^ StringHash.DotNetFullHash(r);
+ var third = HashMM(r) ^ StringHash.CustomHash(line);
+ var reverse = HashXX(r) ^ StringHash.CustomHash2(r);
+
+ var hind = new HIND
{
- _r_primary = new BitArray(bit_size);
- _r_second = new BitArray(bit_size);
- }
+ IndexFirst = (int)(first % _primary.Length),
+ IndexSecond = (int)(second % _second.Length),
+ IndexThird = (int)(third % _third.Length),
+ IndexReverse = (int)(reverse % _reverse.Length)
+ };
+ return hind;
+ }
+
+ private BloomFilter()
+ {
}
public void Add(string item)
@@ -70,22 +86,6 @@ namespace ZeroLevel.DataStructures
return true;
}
- private HIND Compute(string line)
- {
- var hind = new HIND
- {
- PrimiryDirect = HashMM(line),
- SecondDirect = HashXX(line),
- };
- if(_use_reverse)
- {
- var r = Reverse(line);
- hind.PrimiryReverse = HashMM(r);
- hind.SecondReverse = HashXX(r);
- }
- return hind;
- }
-
public static string Reverse(string s)
{
char[] charArray = s.ToCharArray();
@@ -96,39 +96,20 @@ namespace ZeroLevel.DataStructures
[MethodImpl(MethodImplOptions.AggressiveInlining)]
private void Add(HIND hind)
{
- int pi = (int)(hind.PrimiryDirect % (ulong)_primary.Length);
- _primary[pi] = true;
-
- int si = (int)(hind.SecondDirect % (uint)_second.Length);
- _second[si] = true;
-
- if (_use_reverse)
- {
- int rpi = (int)(hind.PrimiryReverse % (ulong)_primary.Length);
- _r_primary[rpi] = true;
-
- int rsi = (int)(hind.SecondReverse % (uint)_second.Length);
- _r_second[rsi] = true;
- }
+ _primary[hind.IndexFirst] = true;
+ _second[hind.IndexSecond] = true;
+ _third[hind.IndexThird] = true;
+ _reverse[hind.IndexReverse] = true;
}
[MethodImpl(MethodImplOptions.AggressiveInlining)]
private bool Contains(HIND hind)
{
- int pi = (int)(hind.PrimiryDirect % (ulong)_primary.Length);
- if (!_primary[pi]) return false;
+ if (!_primary[hind.IndexFirst]) return false;
+ if (!_second[hind.IndexSecond]) return false;
+ if (!_third[hind.IndexThird]) return false;
+ if (!_reverse[hind.IndexReverse]) return false;
- int si = (int)(hind.SecondDirect % (uint)_second.Length);
- if (!_second[si]) return false;
-
- if (_use_reverse)
- {
- int rpi = (int)(hind.PrimiryReverse % (ulong)_primary.Length);
- if (!_r_primary[rpi]) return false;
-
- int rsi = (int)(hind.SecondReverse % (uint)_second.Length);
- if (!_r_second[rsi]) return false;
- }
return true;
}
@@ -145,5 +126,72 @@ namespace ZeroLevel.DataStructures
{
return _hash_mm_32.Hash(line);
}
+
+ public bool IsEqual(BloomFilter other)
+ {
+ if (Equals(this._primary, other._primary) == false) return false;
+ if (Equals(this._second, other._second) == false) return false;
+ if (Equals(this._third, other._third) == false) return false;
+ if (Equals(this._reverse, other._reverse) == false) return false;
+ return true;
+ }
+
+ public bool Equals(BitArray first, BitArray second)
+ {
+ if (first.Length != second.Length)
+ {
+ return false;
+ }
+ for (int i = 0; i < first.Length; i++)
+ {
+ if (first[i] != second[i])
+ {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ public byte[] Dump()
+ {
+ var add = new Action((ms, arr) =>
+ {
+ int tc = arr.Length / 8;
+ ms.Write(BitConverter.GetBytes(tc), 0, 4);
+ byte[] t = new byte[tc];
+ arr.CopyTo(t, 0);
+ ms.Write(t, 0, tc);
+ });
+ using (var ms = new MemoryStream())
+ {
+ add(ms, _primary);
+ add(ms, _second);
+ add(ms, _third);
+ add(ms, _reverse);
+ return ms.ToArray();
+ }
+ }
+
+ public static BloomFilter Load(byte[] data)
+ {
+ var bf = new BloomFilter();
+ byte[] sizeArr = new byte[4];
+ var readArray = new Func(stream =>
+ {
+ stream.Read(sizeArr, 0, 4);
+ int count = BitConverter.ToInt32(sizeArr, 0);
+ byte[] bfData = new byte[count];
+ stream.Read(bfData, 0, count);
+ return new BitArray(bfData);
+ });
+ using (var ms = new MemoryStream(data))
+ {
+ bf._primary = readArray(ms);
+ bf._second = readArray(ms);
+ bf._third = readArray(ms);
+ bf._reverse = readArray(ms);
+ }
+ return bf;
+ }
}
}
diff --git a/ZeroLevel/DataStructures/HyperBloomBloom.cs b/ZeroLevel/DataStructures/HyperBloomBloom.cs
index 2e48a31..a50c789 100644
--- a/ZeroLevel/DataStructures/HyperBloomBloom.cs
+++ b/ZeroLevel/DataStructures/HyperBloomBloom.cs
@@ -1,32 +1,37 @@
-using ZeroLevel.Services.HashFunctions;
+using System;
+using System.IO;
+using ZeroLevel.Services.HashFunctions;
namespace ZeroLevel.DataStructures
{
public class HyperBloomBloom
{
- private IHash _shardHash = new XXHashUnsafe();
private BloomFilter[] _shardes;
- public HyperBloomBloom(int shardes_size, int bit_size, bool use_reverse)
+ public HyperBloomBloom(int shardes_size, int bit_size)
{
_shardes = new BloomFilter[shardes_size];
for (int i = 0; i < shardes_size; i++)
{
- _shardes[i] = new BloomFilter(bit_size, use_reverse);
+ _shardes[i] = new BloomFilter(bit_size);
}
}
+ private HyperBloomBloom()
+ {
+ }
+
public void Add(string item)
{
if (item == null || item.Length == 0) return;
- int index = (int)(_shardHash.Hash(item) % _shardes.Length);
+ var index = GetIndex(item);
_shardes[index].Add(item);
}
public bool Contains(string item)
{
if (item == null || item.Length == 0) return true;
- int index = (int)(_shardHash.Hash(item) % _shardes.Length);
+ var index = GetIndex(item);
return _shardes[index].Contains(item);
}
///
@@ -35,8 +40,64 @@ namespace ZeroLevel.DataStructures
public bool TryAdd(string item)
{
if (item == null || item.Length == 0) return false;
- int index = (int)(_shardHash.Hash(item) % _shardes.Length);
+ var index = GetIndex(item);
return _shardes[index].TryAdd(item);
}
+
+ private uint GetIndex(string line)
+ {
+ var hash = StringHash.DotNetFullHash(line);
+ return (uint)(hash % _shardes.Length);
+ }
+
+ public byte[] Dump()
+ {
+ using (var stream = new MemoryStream())
+ {
+ stream.Write(BitConverter.GetBytes(_shardes.Length), 0, 4);
+ foreach (var shard in _shardes)
+ {
+ var arr = shard.Dump();
+ stream.Write(BitConverter.GetBytes(arr.Length), 0, 4);
+ stream.Write(arr, 0, arr.Length);
+ }
+ return stream.ToArray();
+ }
+ }
+
+ public static HyperBloomBloom Load(byte[] data)
+ {
+ var hbb = new HyperBloomBloom();
+ byte[] sizeArr = new byte[4];
+ using (var stream = new MemoryStream(data))
+ {
+ stream.Read(sizeArr, 0, 4);
+ var count = BitConverter.ToInt32(sizeArr, 0);
+ hbb._shardes = new BloomFilter[count];
+ for (int i = 0; i < count; i++)
+ {
+ stream.Read(sizeArr, 0, 4);
+ var length = BitConverter.ToInt32(sizeArr, 0);
+ var bloomData = new byte[length];
+ stream.Read(bloomData, 0, length);
+ hbb._shardes[i] = BloomFilter.Load(bloomData);
+ }
+ }
+ return hbb;
+ }
+
+ public bool IsEqual(HyperBloomBloom other)
+ {
+ if (this._shardes.Length == other._shardes.Length)
+ {
+ for (int i = 0; i < this._shardes.Length; i++)
+ {
+ if (false == this._shardes[i].IsEqual(other._shardes[i]))
+ return false;
+ }
+ return true;
+ }
+ return false;
+ }
}
}
diff --git a/ZeroLevel/Services/HashFunctions/StringHash.cs b/ZeroLevel/Services/HashFunctions/StringHash.cs
new file mode 100644
index 0000000..fb75a5c
--- /dev/null
+++ b/ZeroLevel/Services/HashFunctions/StringHash.cs
@@ -0,0 +1,54 @@
+namespace ZeroLevel.Services.HashFunctions
+{
+ ///
+ /// In .net core string.GetHashCode not deterministic more
+ /// https://andrewlock.net/why-is-string-gethashcode-different-each-time-i-run-my-program-in-net-core/#a-deterministic-gethashcode-implementation
+ ///
+ public static class StringHash
+ {
+ public static uint DotNetFullHash(string str)
+ {
+ unchecked
+ {
+ int hash1 = (5381 << 16) + 5381;
+ int hash2 = hash1;
+
+ for (int i = 0; i < str.Length; i += 2)
+ {
+ hash1 = ((hash1 << 5) + hash1) ^ str[i];
+ if (i == str.Length - 1)
+ break;
+ hash2 = ((hash2 << 5) + hash2) ^ str[i + 1];
+ }
+
+ return (uint)(hash1 + (hash2 * 1566083941)) & 0x7FFFFFFF;
+ }
+ }
+
+ const long seed = 57;
+ public static long CustomHash(string str)
+ {
+ long result = 1;
+ foreach (var ch in str)
+ {
+ result = (seed * result + (int)ch) & 0xFFFFFFFF;
+ }
+ return result & 0x7FFFFFFF;
+ }
+
+ public static int CustomHash2(string s)
+ {
+ int hash = 0;
+ for (int i = 0; i < s.Length; i++)
+ {
+ hash += s[i];
+ hash += (hash << 10);
+ hash ^= (hash >> 6);
+ }
+ hash += (hash << 3);
+ hash ^= (hash >> 11);
+ hash += (hash << 15);
+ return hash & 0x7FFFFFFF;
+ }
+ }
+}
diff --git a/ZeroLevel/Services/Text/PlainTextTables/TextTableData.cs b/ZeroLevel/Services/Text/PlainTextTables/TextTableData.cs
index 17d2695..6821fa4 100644
--- a/ZeroLevel/Services/Text/PlainTextTables/TextTableData.cs
+++ b/ZeroLevel/Services/Text/PlainTextTables/TextTableData.cs
@@ -83,6 +83,9 @@ namespace ZeroLevel.Services.PlainTextTables
internal TextTableColumn[] Columns { get { return _columns; } }
internal IEnumerable Rows { get { return _rows; } }
+
+ public int RowsCount => _rows.Count;
+ public int ColumnsCount => _columns.Length;
#endregion Properties
@@ -124,6 +127,11 @@ namespace ZeroLevel.Services.PlainTextTables
_rows.Add(new TextTableRow(cells.Select((c, i) => new TextTableCell(_columns[i], c)).ToArray()));
}
+ ///
+ /// Remove all rows data.
+ ///
+ public void Clear() => _rows.Clear();
+
#endregion API
}
}
\ No newline at end of file
diff --git a/ZeroLevel/ZeroLevel.csproj b/ZeroLevel/ZeroLevel.csproj
index 98884fd..2b5886f 100644
--- a/ZeroLevel/ZeroLevel.csproj
+++ b/ZeroLevel/ZeroLevel.csproj
@@ -6,17 +6,17 @@
ogoun
ogoun
- 3.3.4.8
- Added BigFileParser
+ 3.3.5.0
+ Fix Bloom and HyperBloomBloom filters
https://github.com/ogoun/Zero/wiki
Copyright Ogoun 2020
https://github.com/ogoun/Zero
GitHub
- 3.3.4.8
- 3.3.4.8
- AnyCPU;x64
+ 3.3.5.0
+ 3.3.5.0
+ AnyCPU;x64;x86
zero.png
@@ -24,6 +24,10 @@
true
+
+ true
+
+
true
@@ -33,6 +37,15 @@
prompt
none
false
+ x64
+
+
+
+ true
+ prompt
+ none
+ false
+ x86
diff --git a/ZeroNetworkMonitor/App.config b/ZeroNetworkMonitor/App.config
index bae5d6d..4bfa005 100644
--- a/ZeroNetworkMonitor/App.config
+++ b/ZeroNetworkMonitor/App.config
@@ -1,6 +1,6 @@
-
+
diff --git a/ZeroNetworkMonitor/Properties/Settings.Designer.cs b/ZeroNetworkMonitor/Properties/Settings.Designer.cs
index 400373f..b858607 100644
--- a/ZeroNetworkMonitor/Properties/Settings.Designer.cs
+++ b/ZeroNetworkMonitor/Properties/Settings.Designer.cs
@@ -12,7 +12,7 @@ namespace ZeroNetworkMonitor.Properties {
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
- [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.5.0.0")]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.8.1.0")]
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
diff --git a/ZeroNetworkMonitor/ZeroNetworkMonitor.csproj b/ZeroNetworkMonitor/ZeroNetworkMonitor.csproj
index ce8326f..b5fe776 100644
--- a/ZeroNetworkMonitor/ZeroNetworkMonitor.csproj
+++ b/ZeroNetworkMonitor/ZeroNetworkMonitor.csproj
@@ -8,13 +8,15 @@
WinExe
ZeroNetworkMonitor
ZeroNetworkMonitor
- v4.6.1
+ v4.8
512
{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
4
true
true
+
+
AnyCPU
@@ -57,6 +59,26 @@
MinimumRecommendedRules.ruleset
true
+
+ true
+ bin\x86\Debug\
+ DEBUG;TRACE
+ full
+ x86
+ 7.3
+ prompt
+ true
+
+
+ bin\x86\Release\
+ TRACE
+ true
+ pdbonly
+ x86
+ 7.3
+ prompt
+ true
+
@@ -74,6 +96,9 @@
+
+ ..\packages\ZeroLevel.3.3.4.9\lib\netstandard2.0\ZeroLevel.dll
+
@@ -118,6 +143,7 @@
ResXFileCodeGenerator
Resources.Designer.cs
+
SettingsSingleFileGenerator
Settings.Designer.cs
@@ -126,11 +152,5 @@
-
-
- {06c9e60e-d449-41a7-9bf0-a829aaf5d214}
- ZeroLevel
-
-
\ No newline at end of file
diff --git a/ZeroNetworkMonitor/packages.config b/ZeroNetworkMonitor/packages.config
new file mode 100644
index 0000000..ac38130
--- /dev/null
+++ b/ZeroNetworkMonitor/packages.config
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file