diff --git a/binding/csharp/IP2Region.Net/Extensions/ServiceCollectionExtensions.cs b/binding/csharp/IP2Region.Net/Extensions/ServiceCollectionExtensions.cs index b12278d..ace55ad 100644 --- a/binding/csharp/IP2Region.Net/Extensions/ServiceCollectionExtensions.cs +++ b/binding/csharp/IP2Region.Net/Extensions/ServiceCollectionExtensions.cs @@ -1,4 +1,4 @@ -// Copyright 2023 The Ip2Region Authors. All rights reserved. +// Copyright 2023 The Ip2Region Authors. All rights reserved. // Use of this source code is governed by a Apache2.0-style // license that can be found in the LICENSE file. // @Author Alan diff --git a/binding/csharp/IP2Region.Net/Internal/Abstractions/AbstractCacheStrategy.cs b/binding/csharp/IP2Region.Net/Internal/Abstractions/AbstractCacheStrategy.cs index 8d5f06c..3509187 100644 --- a/binding/csharp/IP2Region.Net/Internal/Abstractions/AbstractCacheStrategy.cs +++ b/binding/csharp/IP2Region.Net/Internal/Abstractions/AbstractCacheStrategy.cs @@ -10,11 +10,6 @@ namespace IP2Region.Net.Internal.Abstractions; internal abstract class AbstractCacheStrategy { - protected const int HeaderInfoLength = 256; - protected const int VectorIndexRows = 256; - protected const int VectorIndexCols = 256; - protected const int VectorIndexSize = 8; - protected readonly FileStream XdbFileStream; private const int BufferSize = 4096; @@ -51,4 +46,4 @@ internal abstract class AbstractCacheStrategy return new ReadOnlyMemory(buffer, 0, totalBytesRead); } -} \ No newline at end of file +} diff --git a/binding/csharp/IP2Region.Net/Internal/CacheStrategyFactory.cs b/binding/csharp/IP2Region.Net/Internal/CacheStrategyFactory.cs index 4d9b3d5..0deb198 100644 --- a/binding/csharp/IP2Region.Net/Internal/CacheStrategyFactory.cs +++ b/binding/csharp/IP2Region.Net/Internal/CacheStrategyFactory.cs @@ -17,4 +17,4 @@ internal class CacheStrategyFactory(string xdbPath) CachePolicy.VectorIndex => new VectorIndexCacheStrategy(xdbPath), _ => new FileCacheStrategy(xdbPath), }; -} \ No newline at end of file +} diff --git a/binding/csharp/IP2Region.Net/Internal/ContentCacheStrategy.cs b/binding/csharp/IP2Region.Net/Internal/ContentCacheStrategy.cs index 614495a..c455521 100644 --- a/binding/csharp/IP2Region.Net/Internal/ContentCacheStrategy.cs +++ b/binding/csharp/IP2Region.Net/Internal/ContentCacheStrategy.cs @@ -8,9 +8,9 @@ using IP2Region.Net.Internal.Abstractions; namespace IP2Region.Net.Internal; -internal class ContentCacheStrategy : AbstractCacheStrategy +class ContentCacheStrategy : AbstractCacheStrategy { - private readonly ReadOnlyMemory _cacheData; + readonly ReadOnlyMemory _cacheData; public ContentCacheStrategy(string xdbPath) : base(xdbPath) { @@ -23,4 +23,4 @@ internal class ContentCacheStrategy : AbstractCacheStrategy { return _cacheData.Slice(offset, length); } -} \ No newline at end of file +} diff --git a/binding/csharp/IP2Region.Net/Internal/FileCacheStrategy.cs b/binding/csharp/IP2Region.Net/Internal/FileCacheStrategy.cs index 0f98cfe..3a597b0 100644 --- a/binding/csharp/IP2Region.Net/Internal/FileCacheStrategy.cs +++ b/binding/csharp/IP2Region.Net/Internal/FileCacheStrategy.cs @@ -8,6 +8,7 @@ using IP2Region.Net.Internal.Abstractions; namespace IP2Region.Net.Internal; -internal class FileCacheStrategy(string xdbPath) : AbstractCacheStrategy(xdbPath) +class FileCacheStrategy(string xdbPath) : AbstractCacheStrategy(xdbPath) { -} \ No newline at end of file + +} diff --git a/binding/csharp/IP2Region.Net/Internal/VectorIndexCacheStrategy.cs b/binding/csharp/IP2Region.Net/Internal/VectorIndexCacheStrategy.cs index e9f5fac..e9eb40a 100644 --- a/binding/csharp/IP2Region.Net/Internal/VectorIndexCacheStrategy.cs +++ b/binding/csharp/IP2Region.Net/Internal/VectorIndexCacheStrategy.cs @@ -10,11 +10,16 @@ namespace IP2Region.Net.Internal; internal class VectorIndexCacheStrategy : AbstractCacheStrategy { - private readonly ReadOnlyMemory _vectorIndex; + const int HeaderInfoLength = 256; + const int VectorIndexRows = 256; + const int VectorIndexCols = 256; + const int VectorIndexSize = 8; + + readonly ReadOnlyMemory _vectorIndex; public VectorIndexCacheStrategy(string xdbPath) : base(xdbPath) { var vectorLength = VectorIndexRows * VectorIndexCols * VectorIndexSize; _vectorIndex = base.GetData(HeaderInfoLength, vectorLength); } -} \ No newline at end of file +} diff --git a/binding/csharp/IP2Region.Net/XDB/CachePolicy.cs b/binding/csharp/IP2Region.Net/XDB/CachePolicy.cs index 0f4d035..9397ee0 100644 --- a/binding/csharp/IP2Region.Net/XDB/CachePolicy.cs +++ b/binding/csharp/IP2Region.Net/XDB/CachePolicy.cs @@ -1,17 +1,22 @@ namespace IP2Region.Net.XDB; +/// +/// 缓存策略枚举 +/// public enum CachePolicy { /// /// no cache /// File, + /// /// cache vector index , reduce the number of IO operations /// VectorIndex, + /// /// default cache policy , cache whole xdb file /// Content -} \ No newline at end of file +} diff --git a/binding/csharp/IP2Region.Net/XDB/Searcher.cs b/binding/csharp/IP2Region.Net/XDB/Searcher.cs index 60690c8..5fcbf30 100644 --- a/binding/csharp/IP2Region.Net/XDB/Searcher.cs +++ b/binding/csharp/IP2Region.Net/XDB/Searcher.cs @@ -13,29 +13,47 @@ using System.Text; namespace IP2Region.Net.XDB; +/// +/// 实现类 +/// public class Searcher : ISearcher { private readonly AbstractCacheStrategy _cacheStrategy; + /// + /// + /// public int IoCount => _cacheStrategy.IoCount; + /// + /// + /// public Searcher(CachePolicy cachePolicy, string dbPath) { var factory = new CacheStrategyFactory(dbPath); _cacheStrategy = factory.CreateCacheStrategy(cachePolicy); } + /// + /// + /// public string? Search(string ipStr) { var ipAddress = IPAddress.Parse(ipStr); return Search(ipAddress); } + /// + /// + /// public string? Search(IPAddress ipAddress) { return SearchCore(ipAddress.GetAddressBytes()); } + /// + /// + /// public string? Search(uint ipAddress) { var bytes = BitConverter.GetBytes(ipAddress); diff --git a/binding/csharp/IP2Region.Net/XDB/Util.cs b/binding/csharp/IP2Region.Net/XDB/Util.cs index b151df2..f593a9b 100644 --- a/binding/csharp/IP2Region.Net/XDB/Util.cs +++ b/binding/csharp/IP2Region.Net/XDB/Util.cs @@ -5,6 +5,9 @@ using System.Runtime.InteropServices; namespace IP2Region.Net.XDB; +/// +/// 工具类 +/// public static class Util { public static uint IpAddressToUInt32(string ipAddress) diff --git a/binding/csharp/IP2Region.Net/XDB/XdbVersion.cs b/binding/csharp/IP2Region.Net/XDB/XdbVersion.cs index 1fdb743..e93e9db 100644 --- a/binding/csharp/IP2Region.Net/XDB/XdbVersion.cs +++ b/binding/csharp/IP2Region.Net/XDB/XdbVersion.cs @@ -1,5 +1,8 @@ -namespace IP2Region.Net.XDB; +namespace IP2Region.Net.XDB; +/// +/// XdbVersion 结构体 +/// public struct XdbVersion { ///