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
- PeerDuplexChannel.cs
- RichTextBox.cs
- SQLBoolean.cs
- MatrixValueSerializer.cs
- WebServiceTypeData.cs
- IxmlLineInfo.cs
- StorageMappingItemLoader.cs
- InternalCache.cs
- FrameAutomationPeer.cs
- RelationalExpressions.cs
- DeviceSpecificDialogCachedState.cs
- CodeConditionStatement.cs
- WmlFormAdapter.cs
- FindCriteriaElement.cs
- ToolStripDropDownItem.cs
- DataGridParentRows.cs
- CryptoProvider.cs
- ObjectSet.cs
- PropertyKey.cs
- BuilderPropertyEntry.cs
- WorkflowElementDialogWindow.xaml.cs
- GlyphTypeface.cs
- XmlAutoDetectWriter.cs
- RequestResizeEvent.cs
- SpecialFolderEnumConverter.cs
- ExtendedTransformFactory.cs
- XmlSchemaInfo.cs
- ConcurrentStack.cs
- MetadataArtifactLoaderComposite.cs
- PkcsUtils.cs
- GuidelineSet.cs
- XhtmlBasicCommandAdapter.cs
- CompModSwitches.cs
- XmlBinaryReader.cs
- PrintingPermission.cs
- MarkupExtensionParser.cs
- UnorderedHashRepartitionStream.cs
- BitmapMetadataBlob.cs
- PrintPreviewDialog.cs
- WCFModelStrings.Designer.cs
- ConfigurationPermission.cs
- WebPartZoneBase.cs
- EnvironmentPermission.cs
- DSASignatureDeformatter.cs
- CheckBox.cs
- Ref.cs
- IncrementalReadDecoders.cs
- DeploymentExceptionMapper.cs
- ScrollPatternIdentifiers.cs
- TimeEnumHelper.cs
- _DigestClient.cs
- NotifyIcon.cs
- SerializerWriterEventHandlers.cs
- DeploymentSectionCache.cs
- MexTcpBindingElement.cs
- RectangleHotSpot.cs
- GridViewRowEventArgs.cs
- VisualProxy.cs
- SafeLibraryHandle.cs
- DataControlReferenceCollection.cs
- MeshGeometry3D.cs
- ErrorInfoXmlDocument.cs
- clipboard.cs
- UnsafeNativeMethods.cs
- AssertFilter.cs
- AccessorTable.cs
- CategoryAttribute.cs
- X509Certificate.cs
- FtpWebResponse.cs
- Compensation.cs
- PageTheme.cs
- HandlerBase.cs
- CryptoHelper.cs
- Html32TextWriter.cs
- ToolStripItemGlyph.cs
- InstanceHandle.cs
- ConcurrentQueue.cs
- CompilerTypeWithParams.cs
- MapPathBasedVirtualPathProvider.cs
- Panel.cs
- AcceleratedTokenAuthenticator.cs
- DiagnosticsConfiguration.cs
- DataGridTable.cs
- ValidationResult.cs
- RSAProtectedConfigurationProvider.cs
- DirectoryObjectSecurity.cs
- RootBrowserWindowProxy.cs
- ToolStripSeparator.cs
- NetMsmqBinding.cs
- DesignParameter.cs
- PropertyChangeTracker.cs
- SmiMetaDataProperty.cs
- PrimaryKeyTypeConverter.cs
- TextTrailingCharacterEllipsis.cs
- DataSourceProvider.cs
- DrawingContext.cs
- ParallelTimeline.cs
- ResourceDescriptionAttribute.cs
- ToolboxBitmapAttribute.cs
- SqlDependencyListener.cs