refactor: 兼容 netstander 框架
This commit is contained in:
parent
499e091761
commit
31cd078455
|
|
@ -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);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue