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
- Point3DConverter.cs
- XmlBoundElement.cs
- EventBookmark.cs
- Cell.cs
- Aes.cs
- TextDecoration.cs
- ProfileSection.cs
- StorageInfo.cs
- QueryAccessibilityHelpEvent.cs
- VectorAnimationBase.cs
- OpenTypeLayout.cs
- PtsHelper.cs
- DetailsViewInsertedEventArgs.cs
- InputBindingCollection.cs
- DataGridViewTextBoxCell.cs
- CustomAttributeBuilder.cs
- TextEffect.cs
- ConfigPathUtility.cs
- Base64Stream.cs
- CodeCatchClauseCollection.cs
- Internal.cs
- ScriptResourceInfo.cs
- Int32Collection.cs
- OleStrCAMarshaler.cs
- RemotingConfigParser.cs
- MILUtilities.cs
- FileDialog.cs
- FileClassifier.cs
- OracleColumn.cs
- ReflectEventDescriptor.cs
- SafeHandle.cs
- _CacheStreams.cs
- SuppressIldasmAttribute.cs
- XomlCompilerResults.cs
- Grid.cs
- TokenBasedSetEnumerator.cs
- SQlBooleanStorage.cs
- TextTreeRootTextBlock.cs
- ResourceSetExpression.cs
- ScrollEvent.cs
- RepeaterItemCollection.cs
- contentDescriptor.cs
- GlyphRunDrawing.cs
- RequestCachePolicy.cs
- mediaeventargs.cs
- DataServiceExpressionVisitor.cs
- SqlUnionizer.cs
- Transaction.cs
- TransactionBridge.cs
- RestrictedTransactionalPackage.cs
- HtmlWindowCollection.cs
- DiscoveryDocument.cs
- TypeConvertions.cs
- ButtonBase.cs
- BitmapFrameDecode.cs
- DataSpaceManager.cs
- Storyboard.cs
- OleDbCommandBuilder.cs
- SecurityManager.cs
- updateconfighost.cs
- SeekableReadStream.cs
- PerformanceCounterManager.cs
- XmlTextAttribute.cs
- NonClientArea.cs
- Rotation3DKeyFrameCollection.cs
- XmlILModule.cs
- SqlMethodTransformer.cs
- AutoGeneratedFieldProperties.cs
- TdsParserHelperClasses.cs
- InputScopeManager.cs
- FormatterServices.cs
- CodeAssignStatement.cs
- counter.cs
- HttpClientCertificate.cs
- FrameworkElement.cs
- VisualProxy.cs
- cache.cs
- Binding.cs
- SqlMethods.cs
- HitTestFilterBehavior.cs
- HandlerFactoryWrapper.cs
- ApplicationBuildProvider.cs
- ConstructorNeedsTagAttribute.cs
- ChannelCacheDefaults.cs
- ElementFactory.cs
- MemoryFailPoint.cs
- AliasedSlot.cs
- GregorianCalendarHelper.cs
- ResponseBodyWriter.cs
- CollectionViewProxy.cs
- TcpConnectionPool.cs
- PropertyTabChangedEvent.cs
- ComponentChangingEvent.cs
- WindowsProgressbar.cs
- PartialList.cs
- DrawingVisualDrawingContext.cs
- DialogResultConverter.cs
- ExeContext.cs
- EnumerableRowCollection.cs
- DateTimeOffset.cs