Code:
/ 4.0 / 4.0 / untmp / 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.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- AnnotationObservableCollection.cs
- PageRanges.cs
- WrappedIUnknown.cs
- TextServicesManager.cs
- userdatakeys.cs
- SiteMapPath.cs
- DataGridViewCellCollection.cs
- XMLSchema.cs
- Pens.cs
- FontDialog.cs
- RNGCryptoServiceProvider.cs
- Light.cs
- MenuItemStyle.cs
- PhysicalFontFamily.cs
- ItemsControl.cs
- ProcessInputEventArgs.cs
- DateTimeConstantAttribute.cs
- InfoCardRSACryptoProvider.cs
- CodeTypeDeclarationCollection.cs
- BitArray.cs
- XmlSchemaAnnotated.cs
- OleDbTransaction.cs
- WindowsUpDown.cs
- InstanceDataCollectionCollection.cs
- ParagraphResult.cs
- BufferBuilder.cs
- NamedPipeTransportSecurity.cs
- PropertyEntry.cs
- XhtmlBasicLinkAdapter.cs
- GridViewRow.cs
- CompiledAction.cs
- DataServiceRequestException.cs
- EmptyImpersonationContext.cs
- CacheVirtualItemsEvent.cs
- JoinCqlBlock.cs
- MissingFieldException.cs
- NumberEdit.cs
- HtmlControl.cs
- ServiceContractListItemList.cs
- RotationValidation.cs
- LifetimeServices.cs
- AuthorizationSection.cs
- listitem.cs
- MetadataItem.cs
- DataGridColumnHeadersPresenter.cs
- PerformanceCounterManager.cs
- BuilderInfo.cs
- BrowserTree.cs
- UnsafeNativeMethods.cs
- SafeSecurityHelper.cs
- InputLanguage.cs
- InputEventArgs.cs
- ManipulationDevice.cs
- SingleAnimationUsingKeyFrames.cs
- ResourceWriter.cs
- RelationshipEndMember.cs
- _SslSessionsCache.cs
- ExpressionBindingCollection.cs
- WebEventCodes.cs
- DesignerCategoryAttribute.cs
- XmlCharacterData.cs
- ClientRuntimeConfig.cs
- ContextMenu.cs
- DefaultValueConverter.cs
- DefaultTraceListener.cs
- parserscommon.cs
- OdbcConnection.cs
- DXD.cs
- ZipIORawDataFileBlock.cs
- StylusPointPropertyUnit.cs
- xml.cs
- Compilation.cs
- DataContractSerializerElement.cs
- FrameworkTemplate.cs
- ErrorRuntimeConfig.cs
- jithelpers.cs
- ColorMatrix.cs
- X509Certificate.cs
- StylusEventArgs.cs
- GradientSpreadMethodValidation.cs
- IncrementalHitTester.cs
- PrintController.cs
- InternalConfigHost.cs
- DescendantQuery.cs
- BamlTreeMap.cs
- RIPEMD160.cs
- DrawingCollection.cs
- XmlStreamNodeWriter.cs
- DataColumnChangeEvent.cs
- QuadraticBezierSegment.cs
- FlowDocumentReader.cs
- FlowDocumentReaderAutomationPeer.cs
- PrimarySelectionAdorner.cs
- GuidConverter.cs
- JsonSerializer.cs
- COM2ColorConverter.cs
- PartitionResolver.cs
- DataException.cs
- DataShape.cs
- HttpRawResponse.cs