/// <summary> /// Writes the settings frame. /// </summary> /// <param name="settings">The settings.</param> public void WriteSettings(SettingsPair[] settings) { if (settings == null) throw new ArgumentNullException("settings array is null"); var frame = new SettingsFrame(new List<SettingsPair>(settings)); _writeQueue.WriteFrame(frame); if (OnSettingsSent != null) { OnSettingsSent(this, new SettingsSentEventArgs(frame)); } }
/// <summary> /// Writes the settings frame. /// </summary> /// <param name="settings">The settings.</param> public void WriteSettings(SettingsPair[] settings, bool isAck) { if (settings == null) throw new ArgumentNullException("settings array is null"); var frame = new SettingsFrame(new List<SettingsPair>(settings), isAck); _writeQueue.WriteFrame(frame); if (!isAck && !_settingsAckReceived.WaitOne(60000)) { WriteGoAway(ResetStatusCode.SettingsTimeout); Dispose(); } _settingsAckReceived.Reset(); if (OnSettingsSent != null) { OnSettingsSent(this, new SettingsSentEventArgs(frame)); } }
/// <summary> /// Writes the SETTINGS frame. /// </summary> /// <param name="settings">The settings pairs.</param> /// <param name="isAck">The ACK flag.</param> public void WriteSettings(SettingsPair[] settings, bool isAck) { if (settings == null) throw new ArgumentNullException("settings"); var frame = new SettingsFrame(new List<SettingsPair>(settings), isAck); Http2Logger.LogDebug("Sending SETTINGS frame: stream id={0}, payload len={1}, is ack={2}, count={3}", frame.StreamId, frame.PayloadLength, frame.IsAck, frame.EntryCount); foreach(var s in settings) { Http2Logger.LogDebug("{0}: {1}", s.Id.ToString(), s.Value); } _writeQueue.WriteFrame(frame); if (!isAck && !_settingsAckReceived.WaitOne(60000)) { WriteGoAway(ResetStatusCode.SettingsTimeout); Dispose(); } _settingsAckReceived.Reset(); if (OnSettingsSent != null) { OnSettingsSent(this, new SettingsSentEventArgs(frame)); } }