internal void Read(byte[] buffer, int offset, int count)
{
if (_parent._storedOffset < _parent._storedLength)
{
_read = Math.Min(count, _parent._storedLength - _parent._storedOffset);
Buffer.BlockCopy(_parent._storedBuffer, _parent._storedOffset, buffer, offset, _read);
_parent._storedOffset += _read;
if (_read == count || !_parent._readMore)
{
InvokeCallback();
return;
}
count -= _read;
offset += _read;
}
IAsyncResult result = _parent.BaseStream.BeginRead(buffer, offset, count, s_onRead, this);
if (result.CompletedSynchronously)
{
_read += _parent.BaseStream.EndRead(result);
InvokeCallback();
}
}