Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / whidbey / NetFxQFE / ndp / fx / src / Net / System / Net / Cache / RequestCache.cs / 1 / 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
- MemoryFailPoint.cs
- HttpCookie.cs
- AssemblyEvidenceFactory.cs
- RSAPKCS1SignatureDeformatter.cs
- KeyValueSerializer.cs
- SystemIPAddressInformation.cs
- PartBasedPackageProperties.cs
- ClonableStack.cs
- DesignerUtility.cs
- MethodBody.cs
- IntermediatePolicyValidator.cs
- IPGlobalProperties.cs
- LoaderAllocator.cs
- RewritingValidator.cs
- DesignBinding.cs
- SoapObjectReader.cs
- TemplateFactory.cs
- SplitterPanel.cs
- XmlSchemaCollection.cs
- DesignBindingPicker.cs
- SizeConverter.cs
- PackageRelationship.cs
- DataGridViewBindingCompleteEventArgs.cs
- TaiwanCalendar.cs
- PeerFlooder.cs
- VariableQuery.cs
- ReferenceSchema.cs
- ListSurrogate.cs
- ProxyWebPart.cs
- DiffuseMaterial.cs
- CodeAttributeDeclaration.cs
- XsltSettings.cs
- NavigationEventArgs.cs
- TransactionScope.cs
- WindowsGraphicsCacheManager.cs
- DataGridCommandEventArgs.cs
- ApplyTemplatesAction.cs
- FullTextLine.cs
- CodeBinaryOperatorExpression.cs
- ViewDesigner.cs
- DiscreteKeyFrames.cs
- D3DImage.cs
- XslCompiledTransform.cs
- TextAdaptor.cs
- ArrayWithOffset.cs
- LineInfo.cs
- CurrentChangingEventArgs.cs
- mediapermission.cs
- SqlDataSourceQueryConverter.cs
- Typeface.cs
- ConnectionStringSettingsCollection.cs
- QilSortKey.cs
- MediaContextNotificationWindow.cs
- ChtmlTextWriter.cs
- UIElement.cs
- ListViewAutomationPeer.cs
- WebBrowserUriTypeConverter.cs
- DataTemplateSelector.cs
- Walker.cs
- ZipIORawDataFileBlock.cs
- CallbackDebugBehavior.cs
- WorkerRequest.cs
- DataServiceOperationContext.cs
- OutputCacheProfile.cs
- MimeObjectFactory.cs
- TransformerInfoCollection.cs
- WindowPatternIdentifiers.cs
- UserControl.cs
- SecureUICommand.cs
- AlphaSortedEnumConverter.cs
- SafeWaitHandle.cs
- EventItfInfo.cs
- XmlRawWriterWrapper.cs
- HWStack.cs
- NamespaceInfo.cs
- BuildManager.cs
- DetailsViewPagerRow.cs
- ProfileEventArgs.cs
- DiscoveryServerProtocol.cs
- WebResourceAttribute.cs
- UnmanagedMemoryStream.cs
- XPathAncestorIterator.cs
- EdmProviderManifest.cs
- DataGridTableCollection.cs
- Authorization.cs
- SwitchElementsCollection.cs
- EditorAttribute.cs
- DataBindingExpressionBuilder.cs
- List.cs
- RichTextBoxConstants.cs
- ApplicationServicesHostFactory.cs
- DesignerVerb.cs
- SubpageParaClient.cs
- GeneralTransform3DGroup.cs
- DecoderFallback.cs
- DataColumnPropertyDescriptor.cs
- Content.cs
- CatalogZoneBase.cs
- KeyPressEvent.cs
- RequestCachePolicy.cs