Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / whidbey / NetFXspW7 / 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
- NavigationProgressEventArgs.cs
- XamlSerializationHelper.cs
- WhileDesigner.cs
- XmlChildEnumerator.cs
- DataDocumentXPathNavigator.cs
- AlignmentXValidation.cs
- TraceHandler.cs
- AxisAngleRotation3D.cs
- TranslateTransform3D.cs
- BinaryFormatterWriter.cs
- ObjectStateEntryDbUpdatableDataRecord.cs
- ScaleTransform3D.cs
- ViewManager.cs
- UnionCqlBlock.cs
- ConfigurationErrorsException.cs
- NameTable.cs
- UnrecognizedPolicyAssertionElement.cs
- IODescriptionAttribute.cs
- Matrix.cs
- Point4DValueSerializer.cs
- EmissiveMaterial.cs
- NamespaceCollection.cs
- CodeGenerator.cs
- IBuiltInEvidence.cs
- OleDbParameterCollection.cs
- TreeNodeStyle.cs
- SiteMapDataSourceDesigner.cs
- PaintValueEventArgs.cs
- _ConnectOverlappedAsyncResult.cs
- NullableDoubleAverageAggregationOperator.cs
- Trace.cs
- SiteMapProvider.cs
- HttpConfigurationSystem.cs
- DrawingAttributeSerializer.cs
- TransactionManager.cs
- VirtualDirectoryMapping.cs
- ContactManager.cs
- FrameworkElementFactoryMarkupObject.cs
- RuntimeArgumentHandle.cs
- KeyGestureConverter.cs
- ForceCopyBuildProvider.cs
- RuleSettings.cs
- BaseComponentEditor.cs
- ByteAnimationUsingKeyFrames.cs
- PersianCalendar.cs
- XmlElement.cs
- BitmapSourceSafeMILHandle.cs
- _TransmitFileOverlappedAsyncResult.cs
- TreeViewHitTestInfo.cs
- ThrowHelper.cs
- EntityCommand.cs
- SpellCheck.cs
- StylusButtonCollection.cs
- DesignParameter.cs
- BeginStoryboard.cs
- HttpChannelBindingToken.cs
- SourceElementsCollection.cs
- StrokeDescriptor.cs
- StylusPointProperties.cs
- ServiceChannelManager.cs
- RadioButtonBaseAdapter.cs
- WebHttpEndpointElement.cs
- FloaterBaseParagraph.cs
- DefaultBindingPropertyAttribute.cs
- Frame.cs
- PopupEventArgs.cs
- HierarchicalDataTemplate.cs
- SafePointer.cs
- HttpCachePolicyWrapper.cs
- TableItemStyle.cs
- DocumentOrderComparer.cs
- CollectionType.cs
- ReceiveErrorHandling.cs
- Nullable.cs
- ToolStripTextBox.cs
- CodeIdentifiers.cs
- GenericParameterDataContract.cs
- MachineSettingsSection.cs
- ContentType.cs
- SqlTriggerContext.cs
- UdpDiscoveryEndpointProvider.cs
- FlowNode.cs
- EntityReference.cs
- ImageClickEventArgs.cs
- ListViewCancelEventArgs.cs
- UTF32Encoding.cs
- _BaseOverlappedAsyncResult.cs
- VisualBasicValue.cs
- TagPrefixCollection.cs
- BitStream.cs
- NonSerializedAttribute.cs
- MouseBinding.cs
- CodeEntryPointMethod.cs
- TextFormatter.cs
- ConsoleKeyInfo.cs
- ObjectKeyFrameCollection.cs
- FlowPosition.cs
- HwndHostAutomationPeer.cs
- AssemblyCollection.cs
- SrgsDocument.cs