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
- ProtocolsConfiguration.cs
- Perspective.cs
- Decorator.cs
- XmlArrayItemAttribute.cs
- HttpVersion.cs
- Attributes.cs
- SqlCommandBuilder.cs
- WmlMobileTextWriter.cs
- XmlC14NWriter.cs
- EnumerableCollectionView.cs
- WebBrowserUriTypeConverter.cs
- SQLDoubleStorage.cs
- DBBindings.cs
- EventHandlersStore.cs
- VoiceInfo.cs
- NonVisualControlAttribute.cs
- DbResourceAllocator.cs
- CryptoApi.cs
- String.cs
- Int32Storage.cs
- TCPClient.cs
- SqlConnection.cs
- EncoderParameter.cs
- SerializeAbsoluteContext.cs
- ConfigurationLocation.cs
- HuffModule.cs
- DataComponentGenerator.cs
- PrintEvent.cs
- Journal.cs
- MatrixStack.cs
- UriExt.cs
- XLinq.cs
- ZoneIdentityPermission.cs
- DesignerActionHeaderItem.cs
- ThrowHelper.cs
- ToolStripScrollButton.cs
- ContainsRowNumberChecker.cs
- PathGeometry.cs
- DataGridViewComboBoxColumn.cs
- GenericTextProperties.cs
- RenderDataDrawingContext.cs
- TypeExtension.cs
- SystemIPInterfaceProperties.cs
- SmiConnection.cs
- DataStreams.cs
- StateFinalizationDesigner.cs
- Bezier.cs
- AssociatedControlConverter.cs
- StylusDownEventArgs.cs
- _DisconnectOverlappedAsyncResult.cs
- FixedSchema.cs
- ResourceExpressionBuilder.cs
- DataServiceProviderWrapper.cs
- ExternalDataExchangeService.cs
- TemplateNameScope.cs
- Substitution.cs
- CssClassPropertyAttribute.cs
- DbConnectionHelper.cs
- CapacityStreamGeometryContext.cs
- DatePickerTextBox.cs
- BrowserCapabilitiesFactoryBase.cs
- AppLevelCompilationSectionCache.cs
- SocketInformation.cs
- BitmapEffectRenderDataResource.cs
- SparseMemoryStream.cs
- DBPropSet.cs
- ByteAnimationBase.cs
- ComponentResourceKey.cs
- CompModSwitches.cs
- ObjectSelectorEditor.cs
- AutomationIdentifierGuids.cs
- TypeDependencyAttribute.cs
- PageSettings.cs
- ApplicationContext.cs
- ReaderWriterLockWrapper.cs
- SeparatorAutomationPeer.cs
- TextTrailingWordEllipsis.cs
- RoutedEvent.cs
- FontTypeConverter.cs
- DrawingContextDrawingContextWalker.cs
- JsonObjectDataContract.cs
- ErrorItem.cs
- GlyphRunDrawing.cs
- ComponentResourceManager.cs
- EntityDataSourceEntityTypeFilterConverter.cs
- ProfileServiceManager.cs
- parserscommon.cs
- NullableBoolConverter.cs
- DiscoveryMessageProperty.cs
- AccessDataSourceView.cs
- PersonalizationProviderHelper.cs
- filewebrequest.cs
- Buffer.cs
- DesignSurfaceManager.cs
- RangeBase.cs
- UnauthorizedAccessException.cs
- XmlSchemaSet.cs
- Timer.cs
- EventToken.cs
- HttpRuntimeSection.cs