Files
libraries-tivadar-besthttp/Runtime/Shared/Streams/PeekableIncomingSegmentStream.cs
2026-07-03 05:02:26 +03: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++];
}
}
}