Code:
/ 4.0 / 4.0 / 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. /*++ 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
- SqlDataSourceCache.cs
- TypeBuilder.cs
- PathFigure.cs
- LinkConverter.cs
- RoleManagerEventArgs.cs
- InterleavedZipPartStream.cs
- IPGlobalProperties.cs
- Conditional.cs
- PageRanges.cs
- ContextQuery.cs
- MessageBuilder.cs
- GridViewEditEventArgs.cs
- DataSourceComponent.cs
- ListViewItemSelectionChangedEvent.cs
- Color.cs
- WindowsFont.cs
- BaseProcessor.cs
- RequestBringIntoViewEventArgs.cs
- SqlXml.cs
- ProfileGroupSettings.cs
- ObjectQueryExecutionPlan.cs
- Exceptions.cs
- ExpressionQuoter.cs
- TransformPatternIdentifiers.cs
- ProfileSettingsCollection.cs
- _NegoStream.cs
- Util.cs
- ProvidePropertyAttribute.cs
- PropertyToken.cs
- GradientStopCollection.cs
- AssemblyBuilder.cs
- Exceptions.cs
- ManipulationBoundaryFeedbackEventArgs.cs
- EntityDataSourceSelectingEventArgs.cs
- DesignerWidgets.cs
- CardSpacePolicyElement.cs
- Memoizer.cs
- WebPartDescriptionCollection.cs
- EncoderParameter.cs
- ConfigXmlElement.cs
- XmlAnyElementAttributes.cs
- UserNameSecurityTokenAuthenticator.cs
- MemberDescriptor.cs
- SqlFacetAttribute.cs
- CodeIndexerExpression.cs
- ConfigXmlText.cs
- DeviceSpecificChoice.cs
- XPathSingletonIterator.cs
- DBDataPermission.cs
- VisualBrush.cs
- AgileSafeNativeMemoryHandle.cs
- TextRenderer.cs
- RegexCompiler.cs
- ContentFilePart.cs
- DesignOnlyAttribute.cs
- HyperlinkAutomationPeer.cs
- ConvertEvent.cs
- LocalFileSettingsProvider.cs
- MailAddressParser.cs
- PropertyTabChangedEvent.cs
- TrackingServices.cs
- RenderContext.cs
- GradientStopCollection.cs
- FilterQuery.cs
- PrePrepareMethodAttribute.cs
- CodeGenerator.cs
- ScriptControlDescriptor.cs
- XpsSerializationException.cs
- HttpStreamMessage.cs
- ImageMetadata.cs
- HttpMethodConstraint.cs
- FixUpCollection.cs
- SqlCacheDependency.cs
- TypeInfo.cs
- UIAgentAsyncBeginRequest.cs
- DesignerTextViewAdapter.cs
- CodeDelegateCreateExpression.cs
- DocumentApplicationJournalEntry.cs
- SplashScreenNativeMethods.cs
- DataBinder.cs
- XmlComplianceUtil.cs
- RegexCharClass.cs
- UIElementCollection.cs
- DateTimeEditor.cs
- ListItemParagraph.cs
- SqlClientFactory.cs
- LoginView.cs
- FocusChangedEventArgs.cs
- StructuredTypeEmitter.cs
- DiagnosticTraceSource.cs
- SystemUdpStatistics.cs
- TextCollapsingProperties.cs
- BasicBrowserDialog.cs
- PrivateUnsafeNativeCompoundFileMethods.cs
- PageThemeParser.cs
- DynamicScriptObject.cs
- SiteMapNodeCollection.cs
- EventTask.cs
- ClientEventManager.cs
- FormViewCommandEventArgs.cs