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
- FixedFlowMap.cs
- TableItemPatternIdentifiers.cs
- LightweightCodeGenerator.cs
- DataGridViewCellValidatingEventArgs.cs
- TagMapInfo.cs
- ComponentEditorPage.cs
- OracleParameterCollection.cs
- WebPartTransformer.cs
- XsltLoader.cs
- ProcessModelInfo.cs
- XPathNavigatorReader.cs
- OpCodes.cs
- XamlVector3DCollectionSerializer.cs
- DefinitionBase.cs
- InkCanvasAutomationPeer.cs
- WindowsEditBox.cs
- GeometryHitTestParameters.cs
- DynamicPropertyHolder.cs
- ProviderUtil.cs
- RenderingEventArgs.cs
- BounceEase.cs
- DoubleAnimationUsingKeyFrames.cs
- PanelStyle.cs
- CompilationUnit.cs
- MailAddressParser.cs
- ColumnResizeUndoUnit.cs
- PeerResolverBindingElement.cs
- PartitionResolver.cs
- CategoryGridEntry.cs
- BackStopAuthenticationModule.cs
- ResponseStream.cs
- HtmlTextArea.cs
- GridItemPatternIdentifiers.cs
- HostingEnvironment.cs
- FilterableData.cs
- ArrayElementGridEntry.cs
- ScriptingJsonSerializationSection.cs
- UpDownBaseDesigner.cs
- AccessViolationException.cs
- DataService.cs
- DataConnectionHelper.cs
- FragmentQueryProcessor.cs
- ResolveDuplexCD1AsyncResult.cs
- WindowsRebar.cs
- ControlAdapter.cs
- AnimationLayer.cs
- TransactedBatchingElement.cs
- ItemAutomationPeer.cs
- XPathPatternBuilder.cs
- GeneralTransform3D.cs
- DataReaderContainer.cs
- GridViewPageEventArgs.cs
- FileChangesMonitor.cs
- PnrpPermission.cs
- PtsCache.cs
- __FastResourceComparer.cs
- MenuItemStyleCollection.cs
- DependencyPropertyDescriptor.cs
- AttributeSetAction.cs
- WebBrowser.cs
- DataViewManager.cs
- EventManager.cs
- ContainerActivationHelper.cs
- SingleAnimationBase.cs
- PeerApplication.cs
- SimpleHandlerFactory.cs
- XhtmlBasicValidationSummaryAdapter.cs
- PageTheme.cs
- ComponentEditorForm.cs
- ScrollPatternIdentifiers.cs
- XmlDataFileEditor.cs
- MenuAutomationPeer.cs
- RichTextBoxAutomationPeer.cs
- ListBoxItemAutomationPeer.cs
- DataTemplateKey.cs
- NewExpression.cs
- NumberFunctions.cs
- DropShadowEffect.cs
- AssemblyAttributesGoHere.cs
- HMAC.cs
- Int64AnimationBase.cs
- CapabilitiesUse.cs
- ContextMenu.cs
- MetabaseServerConfig.cs
- SmtpMail.cs
- DependencyPropertyValueSerializer.cs
- SafeFileMappingHandle.cs
- XmlUtf8RawTextWriter.cs
- FrameworkElement.cs
- CompilationUtil.cs
- Vector3dCollection.cs
- XmlSchemaDocumentation.cs
- ExpandedProjectionNode.cs
- IndexerReference.cs
- GridPattern.cs
- XmlReflectionImporter.cs
- ApplyImportsAction.cs
- TreeNodeClickEventArgs.cs
- ColumnCollectionEditor.cs
- CursorInteropHelper.cs