Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / Net / System / Net / Cache / RequestCache.cs / 1305376 / RequestCache.cs
/*++
Copyright (c) Microsoft Corporation
Module Name:
RequestCache.cs
Abstract:
The file specifies interfaces used to communicate with Request Caching subsystem.
Author:
Alexei Vopilov 21-Dec-2002
Revision History:
Jan 25 2004 - Changed the visibility of the class from public to internal.
--*/
namespace System.Net.Cache {
using System;
using System.Diagnostics;
using System.Text;
using System.IO;
using System.Collections.Specialized;
using System.Threading;
// The class specifies the contract for a caching storage to participate in the caching protocol.
// The required functionality is to retrieve cached data and update cache based on a string as a Key.
// It is also assumed that cache does storage quota management so it can remove expired cached entries under limited space conditions.
// Note that no implementation methods should block as there is no Async API exposed by this type.
internal abstract class RequestCache {
internal static readonly char[] LineSplits = new char[] {'\r','\n'};
private bool _IsPrivateCache;
private bool _CanWrite;
protected RequestCache( bool isPrivateCache, bool canWrite)
{
_IsPrivateCache = isPrivateCache;
_CanWrite = canWrite;
}
internal bool IsPrivateCache {get {return _IsPrivateCache;}}
internal bool CanWrite {get {return _CanWrite;}}
// Returns a read data stream and metadata associated with a cached entry.
// Returns Stream.Null if there is no entry found.
// An opened cache entry be preserved until the stream is closed.
//
internal abstract Stream Retrieve(string key, out RequestCacheEntry cacheEntry);
// Returns a write cache stream associated with the string Key.
// Passed parameters allow cache to update an entry metadata accordingly.
// The commit operation should happen on the stream closure.
//
internal abstract Stream Store(
string key,
long contentLength,
DateTime expiresUtc,
DateTime lastModifiedUtc,
TimeSpan maxStale,
StringCollection entryMetadata,
StringCollection systemMetadata
);
//
// Removes an entry from the cache.
//
internal abstract void Remove(string key);
//
// Updates only metadata associated with a cached entry.
//
internal abstract void Update(
string key,
DateTime expiresUtc,
DateTime lastModifiedUtc,
DateTime lastSynchronizedUtc,
TimeSpan maxStale,
StringCollection entryMetadata,
StringCollection systemMetadata);
//
// Does not throw on failure
internal abstract bool TryRetrieve(string key, out RequestCacheEntry cacheEntry, out Stream readStream);
//
// Does not throw on failure
internal abstract bool TryStore(
string key,
long contentLength,
DateTime expiresUtc,
DateTime lastModifiedUtc,
TimeSpan maxStale,
StringCollection entryMetadata,
StringCollection systemMetadata,
out Stream writeStream);
//
// Does not throw on failure
internal abstract bool TryRemove(string key);
//
// Does not throw on failure
internal abstract bool TryUpdate(
string key,
DateTime expiresUtc,
DateTime lastModifiedUtc,
DateTime lastSynchronizedUtc,
TimeSpan maxStale,
StringCollection entryMetadata,
StringCollection systemMetadata);
//
// This can be looked as a design hole since we have to keep the entry
// locked for the case when we want to update that previously retrieved entry.
// I think RequestCache contract should allow to detect that a new physical cache entry
// does not match to the "entry being updated" and so to should ignore updates on replaced entries.
//
internal abstract void UnlockEntry(Stream retrieveStream);
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ImageAnimator.cs
- PropertyIDSet.cs
- PixelShader.cs
- CLRBindingWorker.cs
- MultiDataTrigger.cs
- FormViewDeleteEventArgs.cs
- EntityViewGenerator.cs
- UpdateCompiler.cs
- BlurEffect.cs
- AnimationClockResource.cs
- RsaKeyIdentifierClause.cs
- X509Certificate2.cs
- PersonalizationStateInfo.cs
- ChildrenQuery.cs
- HtmlEncodedRawTextWriter.cs
- SourceSwitch.cs
- TagElement.cs
- SchemaImporter.cs
- AnonymousIdentificationModule.cs
- SQLConvert.cs
- URLMembershipCondition.cs
- DataGridViewRowConverter.cs
- MultiPageTextView.cs
- DllHostInitializer.cs
- UIHelper.cs
- COM2IPerPropertyBrowsingHandler.cs
- smtppermission.cs
- DecimalAnimation.cs
- URLString.cs
- documentsequencetextview.cs
- CompositeActivityValidator.cs
- QilStrConcat.cs
- LinqDataSourceDeleteEventArgs.cs
- PresentationTraceSources.cs
- CompressionTransform.cs
- COM2ColorConverter.cs
- VersionedStream.cs
- GlyphCollection.cs
- DataTemplateKey.cs
- ExceptionCollection.cs
- FileLoadException.cs
- Crypto.cs
- AuthorizationRuleCollection.cs
- DbConnectionHelper.cs
- RegexInterpreter.cs
- Byte.cs
- _AutoWebProxyScriptHelper.cs
- SecureUICommand.cs
- SystemTcpStatistics.cs
- ContextDataSource.cs
- GeneralTransform3DCollection.cs
- SmiSettersStream.cs
- CLRBindingWorker.cs
- DecoderFallback.cs
- ExpandSegment.cs
- DataServiceQuery.cs
- InstancePersistenceCommandException.cs
- ContractMapping.cs
- WebSysDisplayNameAttribute.cs
- UInt32Converter.cs
- SiteMapSection.cs
- CuspData.cs
- Monitor.cs
- ListBindingConverter.cs
- CheckBox.cs
- DockingAttribute.cs
- ArrayItemReference.cs
- WizardPanel.cs
- Error.cs
- TextInfo.cs
- RenamedEventArgs.cs
- EventLogEntry.cs
- Button.cs
- DesignerToolStripControlHost.cs
- SecurityTokenParametersEnumerable.cs
- MbpInfo.cs
- TagPrefixCollection.cs
- DataTableCollection.cs
- StylusPointPropertyUnit.cs
- PropertyEmitterBase.cs
- SingleAnimationUsingKeyFrames.cs
- ConstructorArgumentAttribute.cs
- WorkflowMessageEventHandler.cs
- ComponentChangingEvent.cs
- ObservableCollection.cs
- DurationConverter.cs
- DayRenderEvent.cs
- DoubleCollection.cs
- SimpleFileLog.cs
- SwitchLevelAttribute.cs
- BooleanSwitch.cs
- GPPOINTF.cs
- GraphicsState.cs
- CommandSet.cs
- DictionarySectionHandler.cs
- PageRequestManager.cs
- ImageCodecInfoPrivate.cs
- UserInitiatedNavigationPermission.cs
- WindowsGraphicsCacheManager.cs
- XmlNamespaceDeclarationsAttribute.cs