Code:
/ DotNET / DotNET / 8.0 / untmp / whidbey / REDBITS / 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); } }
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- IgnorePropertiesAttribute.cs
- LogicalChannelCollection.cs
- BamlLocalizer.cs
- SortedDictionary.cs
- CursorConverter.cs
- COM2ExtendedTypeConverter.cs
- HashHelper.cs
- SoapReflectionImporter.cs
- AlphabeticalEnumConverter.cs
- QilFactory.cs
- MouseButton.cs
- Menu.cs
- ResourceDescriptionAttribute.cs
- LineServicesCallbacks.cs
- StringFunctions.cs
- NetworkInformationException.cs
- QilStrConcatenator.cs
- DelegatingConfigHost.cs
- DesignerDataParameter.cs
- CodeBinaryOperatorExpression.cs
- SqlDelegatedTransaction.cs
- WSDualHttpSecurity.cs
- DiscardableAttribute.cs
- SecurityDocument.cs
- DllNotFoundException.cs
- OverflowException.cs
- FontEmbeddingManager.cs
- IsolatedStoragePermission.cs
- Stackframe.cs
- PageBuildProvider.cs
- TypeConstant.cs
- ParallelDesigner.cs
- ConstNode.cs
- AnnotationResourceChangedEventArgs.cs
- CaseDesigner.xaml.cs
- InputScopeManager.cs
- SkinBuilder.cs
- TaskHelper.cs
- ItemsControlAutomationPeer.cs
- DependencyPropertyKey.cs
- EditorZoneDesigner.cs
- EditorPartDesigner.cs
- RunWorkerCompletedEventArgs.cs
- TextContainerChangeEventArgs.cs
- EditorPart.cs
- SoapObjectReader.cs
- XmlBinaryWriterSession.cs
- WhileDesigner.cs
- StringDictionary.cs
- ResourcePart.cs
- TextWriterTraceListener.cs
- WorkflowServiceInstance.cs
- ControlCachePolicy.cs
- CodeGroup.cs
- ListDictionary.cs
- Helper.cs
- OleDbConnectionFactory.cs
- StrokeNodeEnumerator.cs
- ManifestSignedXml.cs
- AsyncDataRequest.cs
- CodeSnippetStatement.cs
- HttpAsyncResult.cs
- ArrangedElement.cs
- PinnedBufferMemoryStream.cs
- datacache.cs
- HeaderCollection.cs
- WeakRefEnumerator.cs
- ObjectConverter.cs
- Main.cs
- XmlHierarchicalDataSourceView.cs
- SmtpFailedRecipientException.cs
- BuildProvider.cs
- MetaType.cs
- CodeTypeConstructor.cs
- DynamicRenderer.cs
- DynamicPropertyReader.cs
- COAUTHIDENTITY.cs
- EventLogStatus.cs
- EpmContentSerializer.cs
- ADMembershipProvider.cs
- CookieHandler.cs
- TabControlEvent.cs
- CircleEase.cs
- X509CertificateTrustedIssuerElement.cs
- ValidatorCompatibilityHelper.cs
- Zone.cs
- AnnouncementInnerClient11.cs
- NullableIntMinMaxAggregationOperator.cs
- SmtpClient.cs
- Types.cs
- QueueException.cs
- SaveFileDialog.cs
- MultipleViewPattern.cs
- KoreanCalendar.cs
- SqlComparer.cs
- TabControlEvent.cs
- X509ChainPolicy.cs
- SafeFileMappingHandle.cs
- DataGridViewCellStyle.cs
- BrowserTree.cs