Code:
/ FX-1434 / FX-1434 / 1.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
- PropertySegmentSerializationProvider.cs
- AppSettingsReader.cs
- AttachedPropertyDescriptor.cs
- HandlerWithFactory.cs
- EventSourceCreationData.cs
- Baml2006ReaderFrame.cs
- DescendentsWalkerBase.cs
- InternalBufferOverflowException.cs
- GeometryDrawing.cs
- CustomAttributeFormatException.cs
- CollectionChangedEventManager.cs
- StylusPlugin.cs
- COM2ColorConverter.cs
- SafeFileHandle.cs
- SerializeAbsoluteContext.cs
- ReferentialConstraintRoleElement.cs
- PerformanceCounter.cs
- FlowDocumentReaderAutomationPeer.cs
- VectorConverter.cs
- UriWriter.cs
- KeyInterop.cs
- DataGridTextBox.cs
- RSACryptoServiceProvider.cs
- CreateUserWizardStep.cs
- LocationUpdates.cs
- NullableDecimalSumAggregationOperator.cs
- LayoutEditorPart.cs
- GridToolTip.cs
- StreamReader.cs
- StorageMappingItemLoader.cs
- HttpCapabilitiesBase.cs
- SingleConverter.cs
- DataControlField.cs
- SemaphoreFullException.cs
- HGlobalSafeHandle.cs
- VBIdentifierName.cs
- PropVariant.cs
- BooleanFacetDescriptionElement.cs
- StringConcat.cs
- StylusPointProperty.cs
- QilExpression.cs
- ToolBarButtonDesigner.cs
- FormViewUpdatedEventArgs.cs
- QilReplaceVisitor.cs
- HttpListenerException.cs
- InvokeBase.cs
- BaseCollection.cs
- ReadOnlyNameValueCollection.cs
- ClientUIRequest.cs
- ChildDocumentBlock.cs
- SystemResourceKey.cs
- XmlNamespaceMapping.cs
- BaseHashHelper.cs
- WebServiceReceive.cs
- MemberRelationshipService.cs
- HyperLink.cs
- SqlLiftWhereClauses.cs
- LogLogRecord.cs
- WebPartEditorApplyVerb.cs
- XmlValidatingReaderImpl.cs
- RuleSettings.cs
- BinaryWriter.cs
- GuidConverter.cs
- StreamingContext.cs
- TextParentUndoUnit.cs
- Pkcs7Signer.cs
- ViewRendering.cs
- DataErrorValidationRule.cs
- ApplicationManager.cs
- TextEditor.cs
- DocumentPageTextView.cs
- EntityTemplateUserControl.cs
- CustomActivityDesigner.cs
- TextParagraphProperties.cs
- XsdBuildProvider.cs
- ControlAdapter.cs
- LocalFileSettingsProvider.cs
- SapiRecoContext.cs
- WebEncodingValidator.cs
- TextComposition.cs
- TextDocumentView.cs
- SecuritySessionClientSettings.cs
- RadioButtonPopupAdapter.cs
- StylusEventArgs.cs
- LocationUpdates.cs
- ComponentDispatcherThread.cs
- Win32SafeHandles.cs
- PeerToPeerException.cs
- DrawingVisualDrawingContext.cs
- SqlUtils.cs
- ApplicationSecurityManager.cs
- OAVariantLib.cs
- _ContextAwareResult.cs
- DataServiceProcessingPipelineEventArgs.cs
- DataGridViewCellValidatingEventArgs.cs
- FormParameter.cs
- CatalogZone.cs
- UrlMappingsSection.cs
- Timer.cs
- ErrorWrapper.cs