public ArraySegment<byte> ReadBytes(int count)
{
this.ThrowIfDisposed();
if (this.readArray == this.bufferList.Count)
{
return default(ArraySegment<byte>);
}
ArraySegment<byte> segment = this.bufferList[this.readArray];
if (segment.Count - this.readOffset >= count)
{
int segmentCount = segment.Count;
segment = new ArraySegment<byte>(segment.Array, segment.Offset + this.readOffset, count);
this.Advance(count, segmentCount);
return segment;
}
else
{
count = Math.Min(count, (int)(this.length - this.position));
byte[] buffer = new byte[count];
this.Read(buffer, 0, count);
segment = new ArraySegment<byte>(buffer);
}
return segment;
}