Code:
/ 4.0 / 4.0 / untmp / 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.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- RegexTree.cs
- DocumentOrderComparer.cs
- JsonFormatMapping.cs
- ThousandthOfEmRealPoints.cs
- FunctionUpdateCommand.cs
- BinaryMethodMessage.cs
- figurelength.cs
- DiscoveryCallbackBehavior.cs
- GridViewDeletedEventArgs.cs
- SerializationStore.cs
- ClaimComparer.cs
- Win32KeyboardDevice.cs
- DebugHandleTracker.cs
- cache.cs
- ScopelessEnumAttribute.cs
- PriorityChain.cs
- XmlNodeChangedEventArgs.cs
- HtmlUtf8RawTextWriter.cs
- IntSecurity.cs
- DelegatingStream.cs
- SqlNotificationEventArgs.cs
- ScriptMethodAttribute.cs
- MouseGestureValueSerializer.cs
- XmlBinaryReader.cs
- TypedDatasetGenerator.cs
- DictationGrammar.cs
- ExtensionSimplifierMarkupObject.cs
- _UriSyntax.cs
- SqlConnectionString.cs
- TableRowCollection.cs
- CharEnumerator.cs
- IntSecurity.cs
- Ipv6Element.cs
- WebReferencesBuildProvider.cs
- ReliableInputConnection.cs
- XmlLinkedNode.cs
- UnknownBitmapEncoder.cs
- _ConnectionGroup.cs
- FileRecordSequence.cs
- RenderingBiasValidation.cs
- UIElementParaClient.cs
- ThaiBuddhistCalendar.cs
- SlipBehavior.cs
- _SecureChannel.cs
- SQLBoolean.cs
- panel.cs
- ListViewUpdateEventArgs.cs
- RoutingChannelExtension.cs
- GeometryGroup.cs
- DoubleCollectionValueSerializer.cs
- RectangleGeometry.cs
- Int32AnimationBase.cs
- FtpWebRequest.cs
- DbSourceParameterCollection.cs
- SQLConvert.cs
- FileUpload.cs
- MiniLockedBorderGlyph.cs
- DataObjectFieldAttribute.cs
- FrameworkContentElementAutomationPeer.cs
- DataGridViewColumnDividerDoubleClickEventArgs.cs
- ForwardPositionQuery.cs
- CharacterMetrics.cs
- SpeechSynthesizer.cs
- PopOutPanel.cs
- TextTreeTextBlock.cs
- DataGridViewDataErrorEventArgs.cs
- ActivityStateQuery.cs
- KeyInterop.cs
- DataGridViewAccessibleObject.cs
- SqlUserDefinedAggregateAttribute.cs
- XamlPoint3DCollectionSerializer.cs
- MergePropertyDescriptor.cs
- grammarelement.cs
- ToolStripContentPanel.cs
- ObjectItemAssemblyLoader.cs
- ContextProperty.cs
- ISFClipboardData.cs
- ResourceDisplayNameAttribute.cs
- ResizeBehavior.cs
- RoutedEventConverter.cs
- DocumentViewerBaseAutomationPeer.cs
- SqlUserDefinedAggregateAttribute.cs
- SerializationInfoEnumerator.cs
- PathHelper.cs
- WinInet.cs
- JsonQNameDataContract.cs
- FileChangeNotifier.cs
- RelativeSource.cs
- SerializationInfo.cs
- XsdBuildProvider.cs
- Renderer.cs
- DetailsViewPageEventArgs.cs
- XmlSerializer.cs
- SortExpressionBuilder.cs
- SecurityContext.cs
- BinaryOperationBinder.cs
- TrackingMemoryStreamFactory.cs
- ReplacementText.cs
- Container.cs
- RequestTimeoutManager.cs