示例#1
0
        //Outgoing
        internal Http2Stream(int id, WriteQueue writeQueue, FlowControlManager flowCrtlManager, int priority = Constants.DefaultStreamPriority)
        {
            if (id <= 0)
            {
                throw new ArgumentOutOfRangeException("invalid id for stream");
            }

            if (priority < 0 || priority > Constants.MaxPriority)
            {
                throw  new ArgumentOutOfRangeException("priority out of range");
            }

            _id              = id;
            Priority         = priority;
            _writeQueue      = writeQueue;
            _flowCrtlManager = flowCrtlManager;

            _unshippedFrames = new Queue <DataFrame>(16);
            Headers          = new HeadersList();

            SentDataAmount       = 0;
            ReceivedDataAmount   = 0;
            IsFlowControlBlocked = false;
            IsFlowControlEnabled = _flowCrtlManager.IsFlowControlEnabled;
            WindowSize           = _flowCrtlManager.StreamsInitialWindowSize;

            _flowCrtlManager.NewStreamOpenedHandler(this);
            OnFrameSent += (sender, args) => FramesSent++;
        }
示例#2
0
        //Outgoing
        internal Http2Stream(int id, WriteQueue writeQueue, FlowControlManager flowCrtlManager,
                             ICompressionProcessor comprProc, Priority priority = Priority.Pri3)
        {
            _id              = id;
            Priority         = priority;
            _writeQueue      = writeQueue;
            _compressionProc = comprProc;
            _flowCrtlManager = flowCrtlManager;

            _unshippedFrames = new Queue <DataFrame>(16);

            SentDataAmount       = 0;
            ReceivedDataAmount   = 0;
            IsFlowControlBlocked = false;
            IsFlowControlEnabled = _flowCrtlManager.IsStreamsFlowControlledEnabled;
            WindowSize           = _flowCrtlManager.StreamsInitialWindowSize;

            _flowCrtlManager.NewStreamOpenedHandler(this);
        }