Files
ichni_Official/Packages/com.tivadar.best.http/Runtime/Shared/Streams/PeekableIncomingSegmentStream.cs
2026-06-15 18:18:16 +08:00

33 lines
905 B
C#

namespace Best.HTTP.Shared.Streams
{
public sealed class PeekableIncomingSegmentStream : PeekableStream
{
private int peek_listIdx;
private int peek_pos;
public override void BeginPeek()
{
peek_listIdx = 0;
peek_pos = base.bufferList.Count > 0 ? base.bufferList[0].Offset : 0;
}
public override int PeekByte()
{
if (base.bufferList.Count == 0)
return -1;
var segment = base.bufferList[this.peek_listIdx];
if (peek_pos >= segment.Offset + segment.Count)
{
if (base.bufferList.Count <= this.peek_listIdx + 1)
return -1;
segment = base.bufferList[++this.peek_listIdx];
this.peek_pos = segment.Offset;
}
return segment.Data[this.peek_pos++];
}
}
}