Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / xsp / System / Web / HttpCacheVaryByContentEncodings.cs / 1305376 / HttpCacheVaryByContentEncodings.cs
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------------
/*
* HttpCacheVaryByContentEncodings
*
* Copyright (c) 1998 Microsoft Corporation
*/
namespace System.Web {
using System.Text;
using System.Runtime.InteropServices;
using System.Web.Util;
using System.Security.Permissions;
///
/// Provides a type-safe way to vary by Content-Encoding.
///
public sealed class HttpCacheVaryByContentEncodings {
String[] _contentEncodings;
bool _isModified;
public HttpCacheVaryByContentEncodings() {
Reset();
}
internal void Reset() {
_isModified = false;
_contentEncodings = null;
}
/*
* Reset based on content encodings.
*/
internal void ResetFromContentEncodings(String[] contentEncodings) {
Reset();
if (contentEncodings != null) {
_isModified = true;
_contentEncodings = new String[contentEncodings.Length];
for (int i = 0; i < contentEncodings.Length; i++) {
_contentEncodings[i] = contentEncodings[i];
}
}
}
// the response is not cacheable if we're varying by content encoding
// and the content-encoding header is not one of the encodings that we're
// varying by
internal bool IsCacheableEncoding(string coding) {
// return true if we are not varying by content encoding.
if (_contentEncodings == null) {
return true;
}
// return true if there is no Content-Encoding header
if (coding == null) {
return true;
}
// return true if the Content-Encoding header is listed
for (int i = 0; i < _contentEncodings.Length; i++) {
if (_contentEncodings[i] == coding) {
return true;
}
}
// return false if the Content-Encoding header is not listed
return false;
}
internal bool IsModified() {
return _isModified;
}
internal String[] GetContentEncodings() {
return _contentEncodings;
}
//
// Public methods and properties
//
///
/// Default property.
/// Indexed property indicating that a cache should (or should not) vary according
/// to a Content-Encoding.
///
public bool this[String contentEncoding]
{
get {
if (String.IsNullOrEmpty(contentEncoding)) {
throw new ArgumentNullException(SR.GetString(SR.Parameter_NullOrEmpty, "contentEncoding"));
}
if (_contentEncodings == null) {
return false;
}
for(int i = 0; i < _contentEncodings.Length; i++) {
if (_contentEncodings[i] == contentEncoding) {
return true;
}
}
return false;
}
set {
if (String.IsNullOrEmpty(contentEncoding)) {
throw new ArgumentNullException(SR.GetString(SR.Parameter_NullOrEmpty, "contentEncoding"));
}
// if someone enabled it, don't allow someone else to disable it.
if (!value) {
return;
}
_isModified = true;
if (_contentEncodings != null) {
string[] contentEncodings = new String[_contentEncodings.Length + 1];
for (int i = 0; i < _contentEncodings.Length; i++) {
contentEncodings[i] = _contentEncodings[i];
}
contentEncodings[contentEncodings.Length - 1] = contentEncoding;
_contentEncodings = contentEncodings;
return;
}
_contentEncodings = new String[1];
_contentEncodings[0] = contentEncoding;
}
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- AssemblyCollection.cs
- SqlSelectStatement.cs
- SingleKeyFrameCollection.cs
- GlobalEventManager.cs
- HMACSHA384.cs
- DecoderExceptionFallback.cs
- ListViewGroupItemCollection.cs
- EntityDesignerUtils.cs
- ToolStripSplitStackLayout.cs
- AnimationTimeline.cs
- DataAccessor.cs
- CommandDevice.cs
- TraceContext.cs
- Int32Storage.cs
- CodeNamespaceCollection.cs
- SqlSelectStatement.cs
- ToolStripSeparatorRenderEventArgs.cs
- GeneralTransform3DTo2D.cs
- MessageBox.cs
- CompositeDataBoundControl.cs
- FilteredSchemaElementLookUpTable.cs
- ConsumerConnectionPointCollection.cs
- IndexedString.cs
- ECDsaCng.cs
- BulletedListEventArgs.cs
- BinaryParser.cs
- CalendarDataBindingHandler.cs
- DPCustomTypeDescriptor.cs
- HashMembershipCondition.cs
- ResourceDisplayNameAttribute.cs
- ColumnMapCopier.cs
- milexports.cs
- NameHandler.cs
- SupportingTokenChannel.cs
- M3DUtil.cs
- DataRowView.cs
- DataGridCommandEventArgs.cs
- Buffer.cs
- CodeMemberEvent.cs
- ImageCollectionCodeDomSerializer.cs
- DockPatternIdentifiers.cs
- SystemException.cs
- ChangePassword.cs
- LightweightCodeGenerator.cs
- BrushValueSerializer.cs
- ElementNotEnabledException.cs
- HandleScope.cs
- ColumnTypeConverter.cs
- SecurityContext.cs
- ApplicationActivator.cs
- DispatchChannelSink.cs
- ProfileInfo.cs
- RectAnimationClockResource.cs
- Buffer.cs
- IgnoreFileBuildProvider.cs
- NavigationPropertyEmitter.cs
- LinqDataSourceEditData.cs
- EntityDataSourceViewSchema.cs
- future.cs
- BufferedStream.cs
- DataRelationCollection.cs
- PixelFormat.cs
- RadioButtonPopupAdapter.cs
- CompressionTransform.cs
- WSDualHttpBindingCollectionElement.cs
- ConfigurationProperty.cs
- storepermission.cs
- SqlCommand.cs
- BindingWorker.cs
- CustomWebEventKey.cs
- SimpleExpression.cs
- FixedSOMTableRow.cs
- DrawingState.cs
- MsmqInputChannelListenerBase.cs
- SourceElementsCollection.cs
- Rotation3D.cs
- UnsafeCollabNativeMethods.cs
- EventMappingSettingsCollection.cs
- BypassElement.cs
- ExpressionBinding.cs
- TextSerializer.cs
- ClientApiGenerator.cs
- WindowsFormsHost.cs
- ComplexObject.cs
- FrameSecurityDescriptor.cs
- TrackingMemoryStream.cs
- XhtmlCssHandler.cs
- ToolStripItemCollection.cs
- DecimalStorage.cs
- DataServiceQueryProvider.cs
- login.cs
- SizeAnimation.cs
- RtType.cs
- SafeHGlobalHandleCritical.cs
- MaxMessageSizeStream.cs
- ServiceContractGenerationContext.cs
- ResXDataNode.cs
- SourceFileBuildProvider.cs
- AuthorizationRule.cs
- ReadOnlyDictionary.cs