/// <summary> /// Handles data frame sent event. /// This method can set flow control block to stream exceeded window size limit. /// </summary> /// <param name="sender">The sender.</param> /// <param name="args">The <see cref="DataFrameSentEventArgs"/> instance containing the event data.</param> public void DataFrameSentHandler(object sender, DataFrameSentEventArgs args) { int id = args.Id; //Stream was closed after a data final frame. if (!_streamDictionary.ContainsKey(id)) { return; } var stream = _streamDictionary[id]; if (!stream.IsFlowControlEnabled) { return; } int dataAmount = args.DataAmount; stream.UpdateWindowSize(-dataAmount); _flowControlledSession.SessionWindowSize += -dataAmount; if (_flowControlledSession.SessionWindowSize <= 0) { IsSessionBlocked = true; //TODO What to do next? } if (stream.WindowSize <= 0) { stream.IsFlowControlBlocked = true; } }
/// <summary> /// Handles data frame sent event. /// This method can set flow control block to stream exceeded window size limit. /// </summary> /// <param name="sender">The sender.</param> /// <param name="args">The <see cref="DataFrameSentEventArgs"/> instance containing the event data.</param> public void DataFrameSentHandler(object sender, DataFrameSentEventArgs args) { int id = args.Id; //Stream was closed after a data final frame. if (_streamCollection.ContainsKey(id) == false) { return; } var stream = _streamCollection[id]; if (stream.IsFlowControlEnabled == false) { return; } int dataAmount = args.DataAmount; stream.UpdateWindowSize(-dataAmount); _flowControlledSession.SessionWindowSize += -dataAmount; if (_flowControlledSession.SessionWindowSize < 0) { IsSessionBlocked = true; //TODO What to do next? } if (stream.WindowSize <= 0) { stream.IsFlowControlBlocked = true; } }