public override int Read(byte[] buffer, int offset, int count)
{
int pageOffset, pageRemaining, pageRead, totalRead = 0;
// Split the read into page sized chunks
while (0 != count)
{
pageOffset = (int)(position % pageSize);
pageRemaining = pageSize - pageOffset;
Debug.Assert(pageRemaining != 0, @"pageRemaining should never be zero.");
pageRead = Math.Min(count, pageRemaining);
Array.Copy(page, pageOffset, buffer, offset, pageRead);
offset += pageRead;
totalRead += pageRead;
count -= pageRead;
Position += pageRead;
}
return totalRead;
}