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
- GCHandleCookieTable.cs
- TextContainerHelper.cs
- ComponentEditorForm.cs
- ComplusTypeValidator.cs
- SqlComparer.cs
- SamlConditions.cs
- ReferencedType.cs
- FixedSOMTextRun.cs
- ApplicationSecurityManager.cs
- MulticastNotSupportedException.cs
- Int16AnimationBase.cs
- HighContrastHelper.cs
- HiddenFieldDesigner.cs
- ParameterCollectionEditorForm.cs
- OdbcDataReader.cs
- DateTimeConstantAttribute.cs
- BindingMAnagerBase.cs
- PositiveTimeSpanValidatorAttribute.cs
- ListViewUpdateEventArgs.cs
- NonBatchDirectoryCompiler.cs
- ReaderContextStackData.cs
- TracePayload.cs
- XmlEntity.cs
- EditingContext.cs
- TreeView.cs
- DesignerActionUI.cs
- DataGridCommandEventArgs.cs
- ScrollData.cs
- AmbientEnvironment.cs
- GraphicsState.cs
- BrushValueSerializer.cs
- DocumentProperties.cs
- ObjectConverter.cs
- TraceSection.cs
- IgnoreSectionHandler.cs
- ColorPalette.cs
- ExpandedProjectionNode.cs
- Pair.cs
- Match.cs
- DbProviderFactory.cs
- ScriptManager.cs
- UnsafeNativeMethodsCLR.cs
- FixedHyperLink.cs
- KnownBoxes.cs
- NoResizeHandleGlyph.cs
- MultipleViewPatternIdentifiers.cs
- SystemWebExtensionsSectionGroup.cs
- InheritanceContextChangedEventManager.cs
- SqlTopReducer.cs
- ellipse.cs
- DynamicResourceExtensionConverter.cs
- ExceptionValidationRule.cs
- SoapCodeExporter.cs
- XPathArrayIterator.cs
- ScriptBehaviorDescriptor.cs
- WindowsListViewItemStartMenu.cs
- ExplicitDiscriminatorMap.cs
- PickDesigner.xaml.cs
- XmlExtensionFunction.cs
- FontStyle.cs
- OperandQuery.cs
- SamlAuthorityBinding.cs
- configsystem.cs
- StackOverflowException.cs
- UTF7Encoding.cs
- UIElementParaClient.cs
- FlowLayout.cs
- SerialErrors.cs
- View.cs
- WCFModelStrings.Designer.cs
- PageStatePersister.cs
- Floater.cs
- OpenTypeLayoutCache.cs
- DataGridLength.cs
- EnumBuilder.cs
- Variant.cs
- FixedBufferAttribute.cs
- Quack.cs
- ColumnReorderedEventArgs.cs
- DecoderFallbackWithFailureFlag.cs
- DragDropHelper.cs
- NumberSubstitution.cs
- NotSupportedException.cs
- FakeModelItemImpl.cs
- CacheDependency.cs
- ReadOnlyCollection.cs
- SeparatorAutomationPeer.cs
- OptionalMessageQuery.cs
- XmlEncodedRawTextWriter.cs
- RuntimeWrappedException.cs
- RelatedCurrencyManager.cs
- EntityDataSourceDesigner.cs
- BaseHashHelper.cs
- CssStyleCollection.cs
- ChangePassword.cs
- Int32Rect.cs
- __TransparentProxy.cs
- JobPageOrder.cs
- SQLGuidStorage.cs
- HttpPostProtocolImporter.cs