internal bool ReceiveFromBufferedPayload(ArraySegment<byte> buffer, out WebSocketReceiveResult receiveResult)
{
ThrowIfDisposed();
ValidateBufferedPayload();
int bytesTransferred = Math.Min(buffer.Count, _bufferedPayloadReceiveResult.Count);
receiveResult = new WebSocketReceiveResult(
bytesTransferred,
_bufferedPayloadReceiveResult.MessageType,
bytesTransferred == 0 && _bufferedPayloadReceiveResult.EndOfMessage,
_bufferedPayloadReceiveResult.CloseStatus,
_bufferedPayloadReceiveResult.CloseStatusDescription);
Buffer.BlockCopy(_payloadBuffer.Array,
_payloadBuffer.Offset + _payloadOffset,
buffer.Array,
buffer.Offset,
bytesTransferred);
bool morePayloadBuffered;
if (_bufferedPayloadReceiveResult.Count == 0)
{
_payloadOffset = 0;
_bufferedPayloadReceiveResult = null;
morePayloadBuffered = false;
}
else
{
_payloadOffset += bytesTransferred;
morePayloadBuffered = true;
this.ValidateBufferedPayload();
}
return morePayloadBuffered;
}