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

WebSocketBuffer() private method

private WebSocketBuffer ( ArraySegment internalBuffer, int receiveBufferSize, int sendBufferSize ) : System.Diagnostics
internalBuffer ArraySegment
receiveBufferSize int
sendBufferSize int
return System.Diagnostics
        private WebSocketBuffer(ArraySegment<byte> internalBuffer, int receiveBufferSize, int sendBufferSize)
        {
            Debug.Assert(internalBuffer != null, "'internalBuffer' MUST NOT be NULL.");
            Debug.Assert(receiveBufferSize >= MinReceiveBufferSize,
                "'receiveBufferSize' MUST be at least " + MinReceiveBufferSize.ToString(NumberFormatInfo.InvariantInfo) + ".");
            Debug.Assert(sendBufferSize >= MinSendBufferSize,
                "'sendBufferSize' MUST be at least " + MinSendBufferSize.ToString(NumberFormatInfo.InvariantInfo) + ".");
            Debug.Assert(receiveBufferSize <= MaxBufferSize,
                "'receiveBufferSize' MUST NOT exceed " + MaxBufferSize.ToString(NumberFormatInfo.InvariantInfo) + ".");
            Debug.Assert(sendBufferSize <= MaxBufferSize,
                "'sendBufferSize' MUST NOT exceed  " + MaxBufferSize.ToString(NumberFormatInfo.InvariantInfo) + ".");

            _receiveBufferSize = receiveBufferSize;
            _sendBufferSize = sendBufferSize;
            _internalBuffer = internalBuffer;
            _gcHandle = GCHandle.Alloc(internalBuffer.Array, GCHandleType.Pinned);
            // Size of the internal buffer owned exclusively by the WSPC.
            int nativeBufferSize = _receiveBufferSize + _sendBufferSize + NativeOverheadBufferSize;
            _startAddress = Marshal.UnsafeAddrOfPinnedArrayElement(internalBuffer.Array, internalBuffer.Offset).ToInt64();
            _endAddress = _startAddress + nativeBufferSize;
            _nativeBuffer = new ArraySegment<byte>(internalBuffer.Array, internalBuffer.Offset, nativeBufferSize);
            _payloadBuffer = new ArraySegment<byte>(internalBuffer.Array,
                _nativeBuffer.Offset + _nativeBuffer.Count,
                _receiveBufferSize);
            _propertyBuffer = new ArraySegment<byte>(internalBuffer.Array,
                _payloadBuffer.Offset + _payloadBuffer.Count,
                s_PropertyBufferSize);
            _sendBufferState = SendBufferState.None;
        }