internal MsQuicStream(MsQuicConnection connection, QUIC_STREAM_OPEN_FLAG flags, IntPtr nativeObjPtr, bool inbound) { Debug.Assert(connection != null, "Connection null"); _ptr = nativeObjPtr; _sendResettableCompletionSource = new ResettableCompletionSource <uint>(); _receiveResettableCompletionSource = new ResettableCompletionSource <uint>(); SetCallbackHandler(); bool isBidirectional = !flags.HasFlag(QUIC_STREAM_OPEN_FLAG.UNIDIRECTIONAL); if (inbound) { _canRead = true; _canWrite = isBidirectional; _started = true; } else { _canRead = isBidirectional; _canWrite = true; StartLocalStream(); } }
// Creates a new MsQuicStream internal MsQuicStream(MsQuicConnection connection, QUIC_STREAM_OPEN_FLAG flags, IntPtr nativeObjPtr, bool inbound) { Debug.Assert(connection != null); _ptr = nativeObjPtr; if (inbound) { _started = StartState.Finished; _canWrite = !flags.HasFlag(QUIC_STREAM_OPEN_FLAG.UNIDIRECTIONAL); _canRead = true; } else { _started = StartState.None; _canWrite = true; _canRead = !flags.HasFlag(QUIC_STREAM_OPEN_FLAG.UNIDIRECTIONAL); } _sendResettableCompletionSource = new ResettableCompletionSource <uint>(); _receiveResettableCompletionSource = new ResettableCompletionSource <uint>(); _shutdownWriteResettableCompletionSource = new ResettableCompletionSource <uint>(); SetCallbackHandler(); }