refactor: 兼容 netstander 框架

This commit is contained in:
Argo Zhang 2025-11-20 15:26:12 +08:00
parent 499e091761
commit 31cd078455
1 changed files with 4 additions and 4 deletions

View File

@ -58,7 +58,7 @@ public class Searcher : ISearcher
var data = _cacheStrategy.GetData(256 + idx, vectorIndexSize); var data = _cacheStrategy.GetData(256 + idx, vectorIndexSize);
var sPtr = BinaryPrimitives.ReadUInt32LittleEndian(data.Span); var sPtr = BinaryPrimitives.ReadUInt32LittleEndian(data.Span);
var ePtr = BinaryPrimitives.ReadUInt32LittleEndian(data.Span[4..]); var ePtr = BinaryPrimitives.ReadUInt32LittleEndian(data.Span.Slice(4));
var length = ipBytes.Length; var length = ipBytes.Length;
var indexSize = length * 2 + 6; var indexSize = length * 2 + 6;
@ -74,7 +74,7 @@ public class Searcher : ISearcher
var p = (int)sPtr + m * indexSize; var p = (int)sPtr + m * indexSize;
var buff = _cacheStrategy.GetData(p, indexSize); var buff = _cacheStrategy.GetData(p, indexSize);
var s = buff.Span[..length]; var s = buff.Span.Slice(0, length);
var e = buff.Span.Slice(length, length); var e = buff.Span.Slice(length, length);
if (ByteCompare(ipBytes, s) == -1) if (ByteCompare(ipBytes, s) == -1)
{ {
@ -87,13 +87,13 @@ public class Searcher : ISearcher
else else
{ {
dataLen = BinaryPrimitives.ReadUInt16LittleEndian(buff.Span.Slice(length * 2, 2)); dataLen = BinaryPrimitives.ReadUInt16LittleEndian(buff.Span.Slice(length * 2, 2));
dataPtr = BinaryPrimitives.ReadUInt32LittleEndian(buff.Span[(length * 2 + 2)..]); dataPtr = BinaryPrimitives.ReadUInt32LittleEndian(buff.Span.Slice(length * 2 + 2));
break; break;
} }
} }
var regionBuff = _cacheStrategy.GetData((int)dataPtr, dataLen); var regionBuff = _cacheStrategy.GetData((int)dataPtr, dataLen);
return Encoding.UTF8.GetString(regionBuff.Span); return Encoding.UTF8.GetString(regionBuff.Span.ToArray());
} }
static int ByteCompare(byte[] ip1, ReadOnlySpan<byte> ip2) => ip1.Length == 4 ? IPv4Compare(ip1, ip2) : IPv6Compare(ip1, ip2); static int ByteCompare(byte[] ip1, ReadOnlySpan<byte> ip2) => ip1.Length == 4 ? IPv4Compare(ip1, ip2) : IPv6Compare(ip1, ip2);