Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / whidbey / netfxsp / 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
- FormParameter.cs
- StandardCommandToolStripMenuItem.cs
- StreamUpdate.cs
- TabControlEvent.cs
- MessageSecurityOverHttp.cs
- HttpGetProtocolReflector.cs
- MimeMapping.cs
- WebPartActionVerb.cs
- WindowsStatusBar.cs
- ToolStripPanelCell.cs
- RtfFormatStack.cs
- ChangeDirector.cs
- CustomErrorsSection.cs
- CompensationHandlingFilter.cs
- DataGridViewColumnEventArgs.cs
- columnmapkeybuilder.cs
- DeclarativeExpressionConditionDeclaration.cs
- BehaviorEditorPart.cs
- ResolvedKeyFrameEntry.cs
- PathGradientBrush.cs
- Button.cs
- SmtpReplyReaderFactory.cs
- XmlAttributeAttribute.cs
- ListBoxItemWrapperAutomationPeer.cs
- EventLogEntry.cs
- EncodingNLS.cs
- DataServiceEntityAttribute.cs
- EventLogRecord.cs
- BidirectionalDictionary.cs
- ConstructorExpr.cs
- XmlExpressionDumper.cs
- ZoneLinkButton.cs
- dataobject.cs
- MasterPageCodeDomTreeGenerator.cs
- Splitter.cs
- ServiceHostingEnvironment.cs
- MessageDesigner.cs
- WindowsListViewItemCheckBox.cs
- metadatamappinghashervisitor.hashsourcebuilder.cs
- ReadContentAsBinaryHelper.cs
- SpellerStatusTable.cs
- EventLogStatus.cs
- SelectionProviderWrapper.cs
- XmlAnyAttributeAttribute.cs
- WinEventHandler.cs
- AggregateNode.cs
- ContractInferenceHelper.cs
- AspCompat.cs
- UdpTransportSettingsElement.cs
- ConnectionManagementElementCollection.cs
- CompilerWrapper.cs
- Math.cs
- CalendarTable.cs
- IntSecurity.cs
- SchemaNotation.cs
- SmiContext.cs
- WindowsPen.cs
- PropertyItem.cs
- ImageSource.cs
- CatalogPart.cs
- TriggerAction.cs
- TextDecorationCollection.cs
- ChannelServices.cs
- Image.cs
- EntityCodeGenerator.cs
- SupportingTokenSecurityTokenResolver.cs
- ServiceReference.cs
- PropertyKey.cs
- MailWebEventProvider.cs
- HashAlgorithm.cs
- figurelengthconverter.cs
- RowSpanVector.cs
- SqlConnectionStringBuilder.cs
- GridViewHeaderRowPresenterAutomationPeer.cs
- Resources.Designer.cs
- MergablePropertyAttribute.cs
- Socket.cs
- DetailsViewModeEventArgs.cs
- EntityCollection.cs
- PropertyGeneratedEventArgs.cs
- PixelFormats.cs
- RSAOAEPKeyExchangeDeformatter.cs
- SetState.cs
- GridEntry.cs
- XmlCharCheckingReader.cs
- CalendarAutoFormat.cs
- OleDbPropertySetGuid.cs
- TabControlEvent.cs
- MetaDataInfo.cs
- SplineKeyFrames.cs
- TextTreeInsertUndoUnit.cs
- PropertyKey.cs
- NativeMethods.cs
- FixUp.cs
- XsltArgumentList.cs
- SystemPens.cs
- CommonXSendMessage.cs
- KnownBoxes.cs
- MetadataArtifactLoaderCompositeResource.cs
- DeploymentSectionCache.cs