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
- ProxyManager.cs
- OdbcEnvironment.cs
- SqlServer2KCompatibilityCheck.cs
- altserialization.cs
- WebPartUtil.cs
- CardSpacePolicyElement.cs
- MetadataArtifactLoaderComposite.cs
- NewArray.cs
- SqlServer2KCompatibilityCheck.cs
- Slider.cs
- Authorization.cs
- HasCopySemanticsAttribute.cs
- OpCellTreeNode.cs
- MarginCollapsingState.cs
- ThreadStaticAttribute.cs
- SchemaInfo.cs
- WhitespaceSignificantCollectionAttribute.cs
- ThreadStartException.cs
- CodeCommentStatement.cs
- TrailingSpaceComparer.cs
- SqlCacheDependencyDatabaseCollection.cs
- Mutex.cs
- HMACSHA1.cs
- Compensate.cs
- SettingsPropertyValue.cs
- CompilationLock.cs
- SessionStateContainer.cs
- InheritedPropertyChangedEventArgs.cs
- ExtensionSimplifierMarkupObject.cs
- FatalException.cs
- EntityWrapperFactory.cs
- Compress.cs
- Application.cs
- ObjectViewEntityCollectionData.cs
- InfoCard.cs
- OleDbConnectionPoolGroupProviderInfo.cs
- Missing.cs
- RequiredAttributeAttribute.cs
- JsonObjectDataContract.cs
- Int32CAMarshaler.cs
- ValidationEventArgs.cs
- WinEventWrap.cs
- HMACSHA1.cs
- QueryContext.cs
- newinstructionaction.cs
- Tablet.cs
- SchemaImporterExtensionsSection.cs
- MessageAction.cs
- SimpleTypeResolver.cs
- OrderedDictionary.cs
- FormViewDeleteEventArgs.cs
- ListItemsPage.cs
- ErrorStyle.cs
- XmlSchemaImport.cs
- XmlImplementation.cs
- ConfigXmlReader.cs
- QueryTreeBuilder.cs
- ItemDragEvent.cs
- WindowsSspiNegotiation.cs
- messageonlyhwndwrapper.cs
- GridViewColumn.cs
- ValidationPropertyAttribute.cs
- BindingUtils.cs
- UInt32.cs
- ViewGenerator.cs
- ListViewItem.cs
- WS2007HttpBindingCollectionElement.cs
- HMACSHA512.cs
- AmbientLight.cs
- StringFormat.cs
- BinaryWriter.cs
- PermissionAttributes.cs
- EventWaitHandle.cs
- EpmTargetPathSegment.cs
- PatternMatcher.cs
- Rect3D.cs
- WindowsUserNameSecurityTokenAuthenticator.cs
- ToolTipAutomationPeer.cs
- PeerNameRegistration.cs
- MemoryPressure.cs
- MetadataException.cs
- FormatSettings.cs
- ContractCodeDomInfo.cs
- ToolStripOverflowButton.cs
- SqlCharStream.cs
- HttpCookie.cs
- ManagementBaseObject.cs
- EmptyEnumerator.cs
- DeploymentSectionCache.cs
- SqlDataSourceSelectingEventArgs.cs
- RSAPKCS1SignatureDeformatter.cs
- ContentDefinition.cs
- XmlSchemaParticle.cs
- DelayedRegex.cs
- FileSystemEventArgs.cs
- OracleConnection.cs
- Expander.cs
- mactripleDES.cs
- Connector.cs
- ListControl.cs