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
- BaseDataList.cs
- QueryCacheEntry.cs
- Binding.cs
- ObjectItemCollection.cs
- InlineUIContainer.cs
- EastAsianLunisolarCalendar.cs
- FieldToken.cs
- EndPoint.cs
- FuncCompletionCallbackWrapper.cs
- RangeContentEnumerator.cs
- SmtpException.cs
- MaskedTextBoxDesignerActionList.cs
- ZipIOExtraFieldPaddingElement.cs
- DispatcherProcessingDisabled.cs
- DescriptionAttribute.cs
- XpsImage.cs
- TextOptions.cs
- EventWaitHandle.cs
- BindingBase.cs
- HandlerBase.cs
- CellNormalizer.cs
- XmlSecureResolver.cs
- TextTreeUndoUnit.cs
- XmlSerializerAssemblyAttribute.cs
- ClipboardProcessor.cs
- SecureStringHasher.cs
- BypassElement.cs
- BuilderElements.cs
- SspiNegotiationTokenProvider.cs
- wgx_sdk_version.cs
- LeaseManager.cs
- MDIWindowDialog.cs
- _HeaderInfo.cs
- String.cs
- xmlformatgeneratorstatics.cs
- Crc32.cs
- ThreadSafeList.cs
- XmlReflectionMember.cs
- Roles.cs
- KeyEventArgs.cs
- BamlLocalizerErrorNotifyEventArgs.cs
- TypeNameConverter.cs
- InputLanguage.cs
- BuildProvidersCompiler.cs
- TextElementCollectionHelper.cs
- BaseConfigurationRecord.cs
- RectAnimationBase.cs
- ProxyElement.cs
- SeekStoryboard.cs
- UserPreferenceChangedEventArgs.cs
- Schema.cs
- MetadataFile.cs
- StorageConditionPropertyMapping.cs
- FamilyCollection.cs
- ISAPIWorkerRequest.cs
- NonBatchDirectoryCompiler.cs
- ToolStripContentPanel.cs
- GeneralTransform.cs
- ConfigurationManagerInternalFactory.cs
- SafeRegistryHandle.cs
- KeyConverter.cs
- HtmlUtf8RawTextWriter.cs
- SHA1Cng.cs
- ClassHandlersStore.cs
- MarkupExtensionParser.cs
- AuthorizationRule.cs
- ColumnResizeUndoUnit.cs
- TraceSource.cs
- SerializationEventsCache.cs
- Variable.cs
- JsonDataContract.cs
- InitializerFacet.cs
- DesignColumnCollection.cs
- TextViewDesigner.cs
- PrintController.cs
- NullExtension.cs
- ComponentEvent.cs
- GridViewHeaderRowPresenterAutomationPeer.cs
- ValidatingPropertiesEventArgs.cs
- ToolZone.cs
- DataGrid.cs
- Transactions.cs
- AxHost.cs
- DistinctQueryOperator.cs
- PanningMessageFilter.cs
- _HeaderInfo.cs
- FileDialogCustomPlace.cs
- sortedlist.cs
- DataGridViewBand.cs
- XhtmlConformanceSection.cs
- OdbcCommand.cs
- NativeMethods.cs
- DataGridViewCellValueEventArgs.cs
- UiaCoreTypesApi.cs
- RoutedPropertyChangedEventArgs.cs
- LocalBuilder.cs
- querybuilder.cs
- DrawingGroupDrawingContext.cs
- InputMethodStateTypeInfo.cs
- UnknownWrapper.cs