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
- DiscoveryDocument.cs
- TaskScheduler.cs
- LayoutTable.cs
- FlowDocumentScrollViewerAutomationPeer.cs
- InnerItemCollectionView.cs
- SchemaInfo.cs
- TextRangeBase.cs
- MobileTemplatedControlDesigner.cs
- PropertyRecord.cs
- UpdateRecord.cs
- EventWaitHandleSecurity.cs
- ToolStripContainerActionList.cs
- RegionInfo.cs
- ObjectDataSourceFilteringEventArgs.cs
- XmlTextReader.cs
- FixedSOMLineCollection.cs
- ThicknessAnimationBase.cs
- TemplateComponentConnector.cs
- XmlElementAttributes.cs
- SafeBitVector32.cs
- XamlReaderHelper.cs
- TraceProvider.cs
- DataListComponentEditor.cs
- DataGridViewRowsAddedEventArgs.cs
- HttpProxyTransportBindingElement.cs
- AtomServiceDocumentSerializer.cs
- FSWPathEditor.cs
- DateTimeOffsetAdapter.cs
- ValidatedControlConverter.cs
- XmlAnyElementAttribute.cs
- XdrBuilder.cs
- Enlistment.cs
- ResourcePart.cs
- StrongNameUtility.cs
- VoiceObjectToken.cs
- Brush.cs
- WorkflowTerminatedException.cs
- TabItem.cs
- JoinSymbol.cs
- DBSqlParserColumnCollection.cs
- _NegotiateClient.cs
- StreamFormatter.cs
- CaseCqlBlock.cs
- WorkflowRuntimeServiceElementCollection.cs
- BindingsCollection.cs
- XmlSchemaInferenceException.cs
- assertwrapper.cs
- PaperSource.cs
- CharacterString.cs
- ThemeInfoAttribute.cs
- FormViewUpdateEventArgs.cs
- TextContainerHelper.cs
- ListControlBuilder.cs
- XmlHierarchicalEnumerable.cs
- XmlSchemaAnnotated.cs
- ToolStripLabel.cs
- HttpServerVarsCollection.cs
- LayoutSettings.cs
- Model3DGroup.cs
- SecurityTokenAttachmentMode.cs
- StreamResourceInfo.cs
- HtmlEmptyTagControlBuilder.cs
- XsdSchemaFileEditor.cs
- PageCache.cs
- DashStyle.cs
- DragDeltaEventArgs.cs
- MetadataPropertyvalue.cs
- CodeMemberField.cs
- Int16Converter.cs
- OdbcConnection.cs
- StrokeNodeEnumerator.cs
- HashUtility.cs
- PageThemeBuildProvider.cs
- OdbcException.cs
- SystemIPv4InterfaceProperties.cs
- RawStylusActions.cs
- VideoDrawing.cs
- ValueTable.cs
- UriTemplateVariableQueryValue.cs
- DoubleLinkListEnumerator.cs
- Set.cs
- TraceContextEventArgs.cs
- COMException.cs
- Query.cs
- SiteMapSection.cs
- InheritanceContextHelper.cs
- RtfToXamlLexer.cs
- HttpListenerPrefixCollection.cs
- SchemaElementDecl.cs
- XsltException.cs
- MultilineStringConverter.cs
- OledbConnectionStringbuilder.cs
- InstallerTypeAttribute.cs
- SchemaElementDecl.cs
- TypeSystemProvider.cs
- SqlNodeAnnotation.cs
- AbsoluteQuery.cs
- InstanceContextManager.cs
- CodePageEncoding.cs
- ColorContextHelper.cs