From: Dion O. <dol...@us...> - 2005-11-15 11:48:05
|
Update of /cvsroot/magicajax/magicajax/Core/UI/Controls In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv17135/magicajax/Core/UI/Controls Modified Files: AjaxPanel.cs Log Message: Code-changes to use SHA1-hashcode for comparing last generated Html with current generated Html. This saves lots of server memory. Also, the 'NoStore' mode doesn't have to use Session anymore to store it's Html data, but instead uses hidden fields on client (so it's now really 'NoStore'). Index: AjaxPanel.cs =================================================================== RCS file: /cvsroot/magicajax/magicajax/Core/UI/Controls/AjaxPanel.cs,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** AjaxPanel.cs 15 Nov 2005 00:30:54 -0000 1.3 --- AjaxPanel.cs 15 Nov 2005 11:47:53 -0000 1.4 *************** *** 82,90 **** private ArrayList _addedControls = new ArrayList(); private ArrayList _removedControls = new ArrayList(); - #if CLIENTSIDE_PANELSTATE private Hashtable _controlHtmlHashes = new Hashtable(); - #else - private Hashtable _controlHtmls = new Hashtable(); - #endif private NoVerifyRenderingPage _noVerifyPage = new NoVerifyRenderingPage(); private ControlCollectionState _controlState = new ControlCollectionState(); --- 82,86 ---- *************** *** 188,196 **** ExtendedRenderControl (control, litewriter); ! #if CLIENTSIDE_PANELSTATE ! _controlHtmlHashes[control] = sb.ToString().GetHashCode(); ! #else ! _controlHtmls[control] = sb.ToString(); ! #endif sb.Length = 0; } --- 184,189 ---- ExtendedRenderControl (control, litewriter); ! _controlHtmlHashes[control] = AjaxCallHelper.GetBase64SHA1Sum(sb.ToString()); ! sb.Length = 0; } *************** *** 210,218 **** _addedControls.Clear(); _removedControls.Clear(); - #if CLIENTSIDE_PANELSTATE _controlHtmlHashes.Clear(); - #else - _controlHtmls.Clear(); - #endif } #endregion --- 203,207 ---- *************** *** 303,311 **** ExtendedRenderControl (con, fullwriter, litewriter); writer.Write (sbFull.ToString()); ! #if CLIENTSIDE_PANELSTATE ! _controlHtmlHashes[con] = sb.ToString().GetHashCode(); ! #else ! _controlHtmls[con] = sb.ToString(); ! #endif sbFull.Length = 0; sb.Length = 0; --- 292,298 ---- ExtendedRenderControl (con, fullwriter, litewriter); writer.Write (sbFull.ToString()); ! ! _controlHtmlHashes[con] = AjaxCallHelper.GetBase64SHA1Sum(sb.ToString()); ! sbFull.Length = 0; sb.Length = 0; *************** *** 327,335 **** protected virtual void SaveControlState() { - #if CLIENTSIDE_PANELSTATE _controlState.SetControlIDs(_controlHtmlHashes); - #else - _controlState.SetControlIDs (_controlHtmls); - #endif _controlState.Save (this.UniqueID, this.Page); } --- 314,318 ---- *************** *** 347,364 **** // Find new and previous controls _addedControls.Clear(); - #if CLIENTSIDE_PANELSTATE _controlHtmlHashes.Clear(); ! #else ! _controlHtmls.Clear(); ! #endif foreach (Control con in this.Controls) { if ( _controlState.ControlIDHtmls.ContainsKey(con.ClientID) ) { - #if CLIENTSIDE_PANELSTATE _controlHtmlHashes[con] = _controlState.ControlIDHtmls[con.ClientID]; - #else - _controlHtmls[con] = _controlState.ControlIDHtmls[con.ClientID]; - #endif } else --- 330,340 ---- // Find new and previous controls _addedControls.Clear(); _controlHtmlHashes.Clear(); ! foreach (Control con in this.Controls) { if ( _controlState.ControlIDHtmls.ContainsKey(con.ClientID) ) { _controlHtmlHashes[con] = _controlState.ControlIDHtmls[con.ClientID]; } else *************** *** 432,440 **** fullwriter.WriteEndTag ("span"); ! #if CLIENTSIDE_PANELSTATE ! _controlHtmlHashes[con] = sb.ToString().GetHashCode(); ! #else ! _controlHtmls[con] = sb.ToString(); ! #endif sb.Length = 0; } --- 408,414 ---- fullwriter.WriteEndTag ("span"); ! ! _controlHtmlHashes[con] = AjaxCallHelper.GetBase64SHA1Sum(sb.ToString()); ! sb.Length = 0; } *************** *** 451,459 **** foreach (Control con in _removedControls) { - #if CLIENTSIDE_PANELSTATE _controlHtmlHashes.Remove(con); - #else - _controlHtmls.Remove (con); - #endif AjaxCallHelper.WriteRemoveElementScript (ClientID, GetAjaxElemID(con)); } --- 425,429 ---- *************** *** 474,482 **** AjaxCallHelper.WriteAddElementScript (ClientID, "span", GetAjaxElemID(con), html, GetNextExistingElement(i)); output.Write (html); ! #if CLIENTSIDE_PANELSTATE ! _controlHtmlHashes[con] = sb.ToString().GetHashCode(); ! #else ! _controlHtmls[con] = sb.ToString(); ! #endif } else --- 444,449 ---- AjaxCallHelper.WriteAddElementScript (ClientID, "span", GetAjaxElemID(con), html, GetNextExistingElement(i)); output.Write (html); ! ! _controlHtmlHashes[con] = AjaxCallHelper.GetBase64SHA1Sum(sb.ToString()); } else *************** *** 484,503 **** ExtendedRenderControl (con, output, litewriter); html = sb.ToString(); ! #if CLIENTSIDE_PANELSTATE ! int htmlHashCode = html.GetHashCode(); ! // If it's html rendering hash is the same, ignore it. ! if (htmlHashCode != (int)_controlHtmlHashes[con]) { ExtendedWriteSetHtmlOfElementScript(html, GetAjaxElemID(con)); _controlHtmlHashes[con] = htmlHashCode; } - #else - // If it's html rendering is the same, ignore it. - if (html != (string)_controlHtmls[con]) - { - ExtendedWriteSetHtmlOfElementScript (html, GetAjaxElemID(con)); - _controlHtmls[con] = html; - } - #endif } } --- 451,462 ---- ExtendedRenderControl (con, output, litewriter); html = sb.ToString(); ! string htmlHashCode = AjaxCallHelper.GetBase64SHA1Sum(html); ! ! // If it's html rendering sha1 hash is the same, ignore it. ! if (htmlHashCode != (string)_controlHtmlHashes[con]) { ExtendedWriteSetHtmlOfElementScript(html, GetAjaxElemID(con)); _controlHtmlHashes[con] = htmlHashCode; } } } *************** *** 755,765 **** { Control con = Controls[i]; - #if CLIENTSIDE_PANELSTATE if (!_addedControls.Contains(con) && _controlHtmlHashes[con] != null) return GetAjaxElemID(con); - #else - if (!_addedControls.Contains(con) && _controlHtmls[con] != null) - return GetAjaxElemID(con); - #endif } --- 714,719 ---- *************** *** 786,790 **** private class ControlCollectionState { - #if CLIENTSIDE_PANELSTATE private SortedList _controlIDHtmlHashes; --- 740,743 ---- *************** *** 793,804 **** _controlIDHtmlHashes = controlIDHtmlHashes; } - #else - private Hashtable _controlIDHtmls; - #endif public static ControlCollectionState LoadState(string panelUniqueID) { ! #if CLIENTSIDE_PANELSTATE ! string panelKey = "__PANELCONTROLSTATE_" + panelUniqueID; string panelControlStates = HttpContext.Current.Request.Form[panelKey]; if (panelControlStates != null) --- 746,753 ---- _controlIDHtmlHashes = controlIDHtmlHashes; } public static ControlCollectionState LoadState(string panelUniqueID) { ! string panelKey = GetPanelControlStateHiddenFieldID(panelUniqueID); string panelControlStates = HttpContext.Current.Request.Form[panelKey]; if (panelControlStates != null) *************** *** 810,819 **** string namevaluepair = namevaluepairs[i]; string[] namevalue = namevaluepair.Split('#'); ! controlIDHtmlHashes.Add(string.Format("{0}_{1}", panelUniqueID, namevalue[0]), int.Parse(namevalue[1], CultureInfo.InvariantCulture)); } return new ControlCollectionState(controlIDHtmlHashes); - - //return new ControlCollectionState((Hashtable)AjaxCallHelper.DeserializeFromString(panelControlStates)); } else --- 759,766 ---- string namevaluepair = namevaluepairs[i]; string[] namevalue = namevaluepair.Split('#'); ! controlIDHtmlHashes.Add(string.Format("{0}_{1}", panelUniqueID, namevalue[0]), namevalue[1]); } return new ControlCollectionState(controlIDHtmlHashes); } else *************** *** 821,863 **** return null; } - #else - return (ControlCollectionState) HttpContext.Current.Session[GetPageKey(panelUniqueID)]; - #endif } ! public static string GetPageKey (string panelUniqueID) { ! return String.Format("__ControlState_{0}_{1}", HttpContext.Current.Request.RawUrl, panelUniqueID); } - #if CLIENTSIDE_PANELSTATE public System.Collections.SortedList ControlIDHtmls { get { return _controlIDHtmlHashes; } } - #else - public Hashtable ControlIDHtmls - { - get { return _controlIDHtmls; } - } - #endif ! public void SetControlIDs (Hashtable controlHtmls) { - #if CLIENTSIDE_PANELSTATE _controlIDHtmlHashes.Clear(); ! foreach (Control con in controlHtmls.Keys) ! _controlIDHtmlHashes.Add(con.ClientID, (int)controlHtmls[con]); ! #else ! _controlIDHtmls.Clear(); ! foreach (Control con in controlHtmls.Keys) ! _controlIDHtmls.Add (con.ClientID, (string)controlHtmls[con]); ! #endif } public void Save(string panelUniqueID, Page page) { ! #if CLIENTSIDE_PANELSTATE ! System.Text.StringBuilder serializedContolStates = new System.Text.StringBuilder(); foreach (string key in _controlIDHtmlHashes.Keys) --- 768,793 ---- return null; } } ! public static string GetPanelControlStateHiddenFieldID (string panelUniqueID) { ! return string.Format("__PANELCONTROLSTATE_{0}", panelUniqueID); } public System.Collections.SortedList ControlIDHtmls { get { return _controlIDHtmlHashes; } } ! public void SetControlIDs (Hashtable controlHtmlHashes) { _controlIDHtmlHashes.Clear(); ! foreach (Control con in controlHtmlHashes.Keys) ! _controlIDHtmlHashes.Add(con.ClientID, (string)controlHtmlHashes[con]); } public void Save(string panelUniqueID, Page page) { ! System.Text.StringBuilder sbuilder = new System.Text.StringBuilder(); foreach (string key in _controlIDHtmlHashes.Keys) *************** *** 865,892 **** if (_controlIDHtmlHashes.IndexOfKey(key) > 0) { ! serializedContolStates.Append(';'); } string keyWithoutNamingcontainer = key.Substring(panelUniqueID.Length + 1); ! serializedContolStates.AppendFormat("{0}#{1}", keyWithoutNamingcontainer, ((int)_controlIDHtmlHashes[key]).ToString(CultureInfo.InvariantCulture)); } ! page.RegisterHiddenField("__PANELCONTROLSTATE_" + panelUniqueID, ! serializedContolStates.ToString()); ! HttpContext.Current.Items.Add("__PANELCONTROLSTATE_" + panelUniqueID, ! serializedContolStates.ToString()); ! #else ! HttpContext.Current.Session[GetPageKey(panelUniqueID)] = this; ! #endif } public ControlCollectionState() { - #if CLIENTSIDE_PANELSTATE _controlIDHtmlHashes = new SortedList(); - #else - _controlIDHtmls = new Hashtable(); - #endif } } --- 795,827 ---- if (_controlIDHtmlHashes.IndexOfKey(key) > 0) { ! sbuilder.Append(';'); } string keyWithoutNamingcontainer = key.Substring(panelUniqueID.Length + 1); ! sbuilder.AppendFormat("{0}#{1}", keyWithoutNamingcontainer, _controlIDHtmlHashes[key]); } ! string serializedPanelStateHashes = sbuilder.ToString(); ! string panelKey = GetPanelControlStateHiddenFieldID(panelUniqueID); ! ! if (AjaxCallHelper.IsAjaxCall) ! { ! //if ajax callback, generate javascript to set panelstate's hidden field value ! if (HttpContext.Current.Request.Form[panelKey] != serializedPanelStateHashes) ! { ! AjaxCallHelper.WriteSetFieldScript(panelKey, serializedPanelStateHashes); ! } ! } ! else ! { ! page.RegisterHiddenField(panelKey, serializedPanelStateHashes); ! } ! } public ControlCollectionState() { _controlIDHtmlHashes = new SortedList(); } } |