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
- WebScriptMetadataMessageEncoderFactory.cs
- _PooledStream.cs
- ScopedKnownTypes.cs
- CompareValidator.cs
- SendParametersContent.cs
- DtdParser.cs
- SystemInfo.cs
- HwndHostAutomationPeer.cs
- LOSFormatter.cs
- UnionExpr.cs
- TargetConverter.cs
- XmlnsCache.cs
- GridViewUpdateEventArgs.cs
- panel.cs
- PathGeometry.cs
- ClientTargetSection.cs
- QueryCursorEventArgs.cs
- GAC.cs
- MatrixValueSerializer.cs
- PrinterSettings.cs
- Int64Animation.cs
- ConditionCollection.cs
- SimpleHandlerBuildProvider.cs
- MsmqTransportElement.cs
- Table.cs
- EdmEntityTypeAttribute.cs
- FixedStringLookup.cs
- TreeViewImageKeyConverter.cs
- ButtonFieldBase.cs
- ListViewItemEventArgs.cs
- SubMenuStyleCollection.cs
- Compiler.cs
- SqlBuilder.cs
- QilGeneratorEnv.cs
- SafeHandle.cs
- UserNameSecurityTokenProvider.cs
- HtmlCommandAdapter.cs
- PrintPreviewControl.cs
- CounterSample.cs
- XpsFixedPageReaderWriter.cs
- FormsAuthenticationTicket.cs
- ElasticEase.cs
- RuleCache.cs
- EntityRecordInfo.cs
- SID.cs
- DoubleUtil.cs
- PolyBezierSegmentFigureLogic.cs
- RecordManager.cs
- ListViewEditEventArgs.cs
- WebBrowserPermission.cs
- HybridCollection.cs
- SchemaLookupTable.cs
- PeerNearMe.cs
- httpapplicationstate.cs
- SupportsEventValidationAttribute.cs
- TreeNodeBindingCollection.cs
- WsatServiceAddress.cs
- DeleteWorkflowOwnerCommand.cs
- ReadOnlyHierarchicalDataSource.cs
- MessageQueueCriteria.cs
- ForeignConstraint.cs
- ActivatedMessageQueue.cs
- TextTreeRootNode.cs
- InvalidateEvent.cs
- SequenceDesigner.cs
- Int32Rect.cs
- FileDetails.cs
- ResourceBinder.cs
- FontNameConverter.cs
- XmlCustomFormatter.cs
- FontFaceLayoutInfo.cs
- UIElementHelper.cs
- DbParameterHelper.cs
- PrinterResolution.cs
- Int32KeyFrameCollection.cs
- PresentationAppDomainManager.cs
- ConfigurationSectionHelper.cs
- ApplicationHost.cs
- TargetConverter.cs
- SplayTreeNode.cs
- DateTimeFormatInfo.cs
- _SSPISessionCache.cs
- ControlPropertyNameConverter.cs
- SmiContext.cs
- __ConsoleStream.cs
- GlyphRunDrawing.cs
- TextContainer.cs
- GlyphRun.cs
- HttpCacheVaryByContentEncodings.cs
- SmtpSection.cs
- DataListItem.cs
- NullableLongSumAggregationOperator.cs
- AssemblyBuilderData.cs
- XmlnsDictionary.cs
- HtmlTable.cs
- HtmlInputControl.cs
- TemplateXamlParser.cs
- ConfigXmlElement.cs
- SvcMapFile.cs
- MarkupExtensionSerializer.cs