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
- InvalidDataContractException.cs
- HandleCollector.cs
- ToolBarOverflowPanel.cs
- FormsAuthenticationModule.cs
- BStrWrapper.cs
- ClientTarget.cs
- CodeDirectiveCollection.cs
- TextCompositionEventArgs.cs
- LinkTarget.cs
- COM2IVsPerPropertyBrowsingHandler.cs
- AspNetSynchronizationContext.cs
- SendingRequestEventArgs.cs
- FramingEncoders.cs
- MultiTargetingUtil.cs
- ProcessManager.cs
- BmpBitmapDecoder.cs
- XmlTextReaderImpl.cs
- ExtendedPropertyDescriptor.cs
- XamlDesignerSerializationManager.cs
- DoubleLinkListEnumerator.cs
- ParameterModifier.cs
- RuntimeEnvironment.cs
- StronglyTypedResourceBuilder.cs
- LocationSectionRecord.cs
- CursorConverter.cs
- XmlBindingWorker.cs
- AttachedAnnotation.cs
- XmlSchemaChoice.cs
- CreatingCookieEventArgs.cs
- ArrangedElementCollection.cs
- RSAPKCS1KeyExchangeDeformatter.cs
- SoapInteropTypes.cs
- QuotedPairReader.cs
- RunWorkerCompletedEventArgs.cs
- RoutedCommand.cs
- PtsCache.cs
- BamlLocalizationDictionary.cs
- GridViewColumn.cs
- ThreadStateException.cs
- ExceptionUtility.cs
- ColorTransform.cs
- CanonicalizationDriver.cs
- RequestNavigateEventArgs.cs
- SelectedCellsCollection.cs
- TypeDescriptionProviderAttribute.cs
- HttpCookieCollection.cs
- Options.cs
- BStrWrapper.cs
- UnionCodeGroup.cs
- GeneratedCodeAttribute.cs
- SequentialWorkflowHeaderFooter.cs
- ListView.cs
- OdbcEnvironment.cs
- MenuBase.cs
- PreviewKeyDownEventArgs.cs
- CodeTypeDeclaration.cs
- RequestContext.cs
- TransformedBitmap.cs
- HtmlInputFile.cs
- Config.cs
- ValidationHelper.cs
- BufferedGraphics.cs
- SqlFunctionAttribute.cs
- AppSettingsReader.cs
- JournalNavigationScope.cs
- UInt32Converter.cs
- SqlWebEventProvider.cs
- CorruptingExceptionCommon.cs
- FixedSOMSemanticBox.cs
- ClientBuildManager.cs
- WebPartAddingEventArgs.cs
- PropertySegmentSerializer.cs
- XmlAtomicValue.cs
- FontCacheUtil.cs
- ForeignConstraint.cs
- StrokeNodeOperations.cs
- HttpClientCertificate.cs
- uribuilder.cs
- CommandExpr.cs
- PriorityRange.cs
- XpsColorContext.cs
- COM2Enum.cs
- CodeDomSerializationProvider.cs
- AutomationPatternInfo.cs
- DescendentsWalkerBase.cs
- StoragePropertyMapping.cs
- RowToFieldTransformer.cs
- EntityDataSourceSelectingEventArgs.cs
- TreeNodeBindingCollection.cs
- EncoderParameters.cs
- StylusPoint.cs
- EmptyStringExpandableObjectConverter.cs
- BamlRecords.cs
- DropShadowBitmapEffect.cs
- StylusButtonCollection.cs
- UpdatePanelTrigger.cs
- ConfigurationSectionGroup.cs
- HostExecutionContextManager.cs
- TemplateControlCodeDomTreeGenerator.cs
- DocumentSequence.cs