Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / whidbey / NetFXspW7 / ndp / fx / src / xsp / System / Web / HttpCacheVary.cs / 1 / HttpCacheVary.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- /* * Cache Vary class. Wraps Vary header * * Copyright (c) 1998 Microsoft Corporation */ namespace System.Web { using System.Text; using System.Runtime.InteropServices; using System.Web.Util; using System.Security.Permissions; ////// [AspNetHostingPermission(SecurityAction.LinkDemand, Level=AspNetHostingPermissionLevel.Minimal)] public sealed class HttpCacheVaryByHeaders { bool _isModified; bool _varyStar; HttpDictionary _headers; internal HttpCacheVaryByHeaders() { Reset(); } internal void Reset() { _isModified = false; _varyStar = false; _headers = null; } /* * Reset based on the cached vary headers. */ internal void ResetFromHeaders(String[] headers) { int i, n; if (headers == null) { _isModified = false; _varyStar = false; _headers = null; } else { _isModified = true; if (headers[0].Equals("*")) { Debug.Assert(headers.Length == 1, "headers.Length == 1"); _varyStar = true; _headers = null; } else { _varyStar = false; _headers = new HttpDictionary(); for (i = 0, n = headers.Length; i < n; i++) { _headers.SetValue(headers[i], headers[i]); } } } } internal bool IsModified() { return _isModified; } /* * Construct header value string */ internal String ToHeaderString() { StringBuilder s; Object item; int i, n; if (_varyStar) { return "*"; } else if (_headers != null) { s = new StringBuilder(); for (i = 0, n = _headers.Size; i < n; i++) { item = _headers.GetValue(i); if (item != null) { HttpCachePolicy.AppendValueToHeader(s, (String)item); } } if (s.Length > 0) return s.ToString(); } return null; } /* * Returns the headers, for package access only. * * @return the headers. */ internal String[] GetHeaders() { String[] s = null; Object item; int i, j, c, n; if (_varyStar) { return new String[1] {"*"}; } else if (_headers != null) { n = _headers.Size; c = 0; for (i = 0; i < n; i++) { item = _headers.GetValue(i); if (item != null) { c++; } } if (c > 0) { s = new string[c]; j = 0; for (i = 0; i < n; i++) { item = _headers.GetValue(i); if (item != null) { s[j] = (String) item; j++; } } Debug.Assert(j == c, "j == c"); } } return s; } // // Public methods and properties // ///Indicates that a cache should contain multiple /// representations for a particular Uri. This class is an encapsulation that /// provides a rich, type-safe way to set the Vary header. ////// public void VaryByUnspecifiedParameters() { _isModified = true; _varyStar = true; _headers = null; } internal bool GetVaryByUnspecifiedParameters() { return _varyStar; } /* * Vary by accept types */ ///Sets the "Vary: *" header and causes all other Vary: /// header information to be dropped. ////// public bool AcceptTypes { get { return this["Accept"]; } set { _isModified = true; this["Accept"] = value; } } /* * Vary by accept language */ ///Retrieves or assigns a value indicating whether the cache should vary by Accept types. This causes the /// Vary: header to include an Accept field. ////// public bool UserLanguage { get { return this["Accept-Language"]; } set { _isModified = true; this["Accept-Language"] = value; } } /* * Vary by user agent */ ///Retrieves or assigns a Boolean value indicating whether /// the cache should vary by user language. ////// public bool UserAgent { get { return this["User-Agent"]; } set { _isModified = true; this["User-Agent"] = value; } } /* * Vary by charset */ ///Retrieves or assigns a Boolean value indicating whether /// the cache should vary by user agent. ////// public bool UserCharSet { get { return this["Accept-Charset"]; } set { _isModified = true; this["Accept-Charset"] = value; } } /* * Vary by a given header */ ///Retrieves or assigns a value indicating whether the /// cache should vary by browser character set. ////// public bool this[String header] { get { if (header == null) { throw new ArgumentNullException("header"); } if (header.Equals("*")) { return _varyStar; } else { return (_headers != null && _headers.GetValue(header) != null); } } set { if (header == null) { throw new ArgumentNullException("header"); } /* * Since adding a Vary header is more restrictive, we don't * want components to be able to set a Vary header to false * if another component has set it to true. */ if (value == false) { return; } _isModified = true; if (header.Equals("*")) { VaryByUnspecifiedParameters(); } else { // set value to header if true or null if false if (!_varyStar) { if (_headers == null) { _headers = new HttpDictionary(); } _headers.SetValue(header, header); } } } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //------------------------------------------------------------------------------ //Default property. /// Indexed property indicating that a cache should (or should not) vary according /// to a custom header. ///// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- /* * Cache Vary class. Wraps Vary header * * Copyright (c) 1998 Microsoft Corporation */ namespace System.Web { using System.Text; using System.Runtime.InteropServices; using System.Web.Util; using System.Security.Permissions; ////// [AspNetHostingPermission(SecurityAction.LinkDemand, Level=AspNetHostingPermissionLevel.Minimal)] public sealed class HttpCacheVaryByHeaders { bool _isModified; bool _varyStar; HttpDictionary _headers; internal HttpCacheVaryByHeaders() { Reset(); } internal void Reset() { _isModified = false; _varyStar = false; _headers = null; } /* * Reset based on the cached vary headers. */ internal void ResetFromHeaders(String[] headers) { int i, n; if (headers == null) { _isModified = false; _varyStar = false; _headers = null; } else { _isModified = true; if (headers[0].Equals("*")) { Debug.Assert(headers.Length == 1, "headers.Length == 1"); _varyStar = true; _headers = null; } else { _varyStar = false; _headers = new HttpDictionary(); for (i = 0, n = headers.Length; i < n; i++) { _headers.SetValue(headers[i], headers[i]); } } } } internal bool IsModified() { return _isModified; } /* * Construct header value string */ internal String ToHeaderString() { StringBuilder s; Object item; int i, n; if (_varyStar) { return "*"; } else if (_headers != null) { s = new StringBuilder(); for (i = 0, n = _headers.Size; i < n; i++) { item = _headers.GetValue(i); if (item != null) { HttpCachePolicy.AppendValueToHeader(s, (String)item); } } if (s.Length > 0) return s.ToString(); } return null; } /* * Returns the headers, for package access only. * * @return the headers. */ internal String[] GetHeaders() { String[] s = null; Object item; int i, j, c, n; if (_varyStar) { return new String[1] {"*"}; } else if (_headers != null) { n = _headers.Size; c = 0; for (i = 0; i < n; i++) { item = _headers.GetValue(i); if (item != null) { c++; } } if (c > 0) { s = new string[c]; j = 0; for (i = 0; i < n; i++) { item = _headers.GetValue(i); if (item != null) { s[j] = (String) item; j++; } } Debug.Assert(j == c, "j == c"); } } return s; } // // Public methods and properties // ///Indicates that a cache should contain multiple /// representations for a particular Uri. This class is an encapsulation that /// provides a rich, type-safe way to set the Vary header. ////// public void VaryByUnspecifiedParameters() { _isModified = true; _varyStar = true; _headers = null; } internal bool GetVaryByUnspecifiedParameters() { return _varyStar; } /* * Vary by accept types */ ///Sets the "Vary: *" header and causes all other Vary: /// header information to be dropped. ////// public bool AcceptTypes { get { return this["Accept"]; } set { _isModified = true; this["Accept"] = value; } } /* * Vary by accept language */ ///Retrieves or assigns a value indicating whether the cache should vary by Accept types. This causes the /// Vary: header to include an Accept field. ////// public bool UserLanguage { get { return this["Accept-Language"]; } set { _isModified = true; this["Accept-Language"] = value; } } /* * Vary by user agent */ ///Retrieves or assigns a Boolean value indicating whether /// the cache should vary by user language. ////// public bool UserAgent { get { return this["User-Agent"]; } set { _isModified = true; this["User-Agent"] = value; } } /* * Vary by charset */ ///Retrieves or assigns a Boolean value indicating whether /// the cache should vary by user agent. ////// public bool UserCharSet { get { return this["Accept-Charset"]; } set { _isModified = true; this["Accept-Charset"] = value; } } /* * Vary by a given header */ ///Retrieves or assigns a value indicating whether the /// cache should vary by browser character set. ////// public bool this[String header] { get { if (header == null) { throw new ArgumentNullException("header"); } if (header.Equals("*")) { return _varyStar; } else { return (_headers != null && _headers.GetValue(header) != null); } } set { if (header == null) { throw new ArgumentNullException("header"); } /* * Since adding a Vary header is more restrictive, we don't * want components to be able to set a Vary header to false * if another component has set it to true. */ if (value == false) { return; } _isModified = true; if (header.Equals("*")) { VaryByUnspecifiedParameters(); } else { // set value to header if true or null if false if (!_varyStar) { if (_headers == null) { _headers = new HttpDictionary(); } _headers.SetValue(header, header); } } } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.Default property. /// Indexed property indicating that a cache should (or should not) vary according /// to a custom header. ///
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- Repeater.cs
- RequestTimeoutManager.cs
- BoundColumn.cs
- XmlSchemaSimpleType.cs
- QueryAsyncResult.cs
- NotifyIcon.cs
- ToolStripOverflowButton.cs
- FacetValues.cs
- MessageEnumerator.cs
- XmlDataDocument.cs
- CodeCompileUnit.cs
- LateBoundBitmapDecoder.cs
- TextParentUndoUnit.cs
- XPathScanner.cs
- ValueExpressions.cs
- MultiBinding.cs
- OleDbParameterCollection.cs
- ReceiveCompletedEventArgs.cs
- TypeSource.cs
- LayoutEditorPart.cs
- InProcStateClientManager.cs
- ProcessHostServerConfig.cs
- SettingsSavedEventArgs.cs
- Model3D.cs
- Rfc2898DeriveBytes.cs
- DocumentApplicationDocumentViewer.cs
- MaskInputRejectedEventArgs.cs
- EventDrivenDesigner.cs
- TraceHwndHost.cs
- Vector.cs
- Odbc32.cs
- ZipFileInfo.cs
- EntityModelSchemaGenerator.cs
- Geometry.cs
- ConnectionPoint.cs
- AlternateViewCollection.cs
- FileDialogPermission.cs
- BindingWorker.cs
- PermissionListSet.cs
- EventSinkHelperWriter.cs
- FrameworkElementFactory.cs
- SafeCryptoHandles.cs
- EntityParameter.cs
- SevenBitStream.cs
- XmlSchemaSimpleTypeRestriction.cs
- ProjectionCamera.cs
- ArgIterator.cs
- StorageMappingFragment.cs
- RuleSettingsCollection.cs
- XmlWellformedWriter.cs
- XmlCharCheckingWriter.cs
- ExeContext.cs
- DropAnimation.xaml.cs
- UnsafeNativeMethods.cs
- PanningMessageFilter.cs
- Pen.cs
- VectorAnimationBase.cs
- MultiPropertyDescriptorGridEntry.cs
- GridViewRowPresenterBase.cs
- TogglePattern.cs
- JsonUriDataContract.cs
- IOException.cs
- RepeatInfo.cs
- ComponentChangedEvent.cs
- XamlTreeBuilder.cs
- XmlSchemaDatatype.cs
- IDispatchConstantAttribute.cs
- TextElementEnumerator.cs
- ContainerVisual.cs
- FactorySettingsElement.cs
- SubqueryTrackingVisitor.cs
- TextProperties.cs
- BooleanAnimationUsingKeyFrames.cs
- DrawingState.cs
- VectorConverter.cs
- WindowsRegion.cs
- PnrpPermission.cs
- AdapterUtil.cs
- ADRole.cs
- ProtocolElementCollection.cs
- PolyBezierSegmentFigureLogic.cs
- RoleServiceManager.cs
- _UncName.cs
- BitmapEncoder.cs
- TextElementAutomationPeer.cs
- CompositeScriptReferenceEventArgs.cs
- MdiWindowListStrip.cs
- TextFindEngine.cs
- ListBindingConverter.cs
- XmlNamespaceManager.cs
- CompositeDataBoundControl.cs
- WindowsPen.cs
- DataKeyArray.cs
- wpf-etw.cs
- CurrencyWrapper.cs
- HttpHandlerAction.cs
- ScrollChrome.cs
- PageThemeCodeDomTreeGenerator.cs
- HtmlInputCheckBox.cs
- Keyboard.cs