System.Net.WebSockets.WebSocketBuffer.ReceiveFromBufferedPayload C# (CSharp) Method

ReceiveFromBufferedPayload() private method

private ReceiveFromBufferedPayload ( ArraySegment buffer, WebSocketReceiveResult &receiveResult ) : bool
buffer ArraySegment
receiveResult WebSocketReceiveResult
return bool
        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;
        }