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
- XmlEncodedRawTextWriter.cs
- EncoderFallback.cs
- StylusPointProperties.cs
- JoinCqlBlock.cs
- AutoScrollExpandMessageFilter.cs
- EventMappingSettingsCollection.cs
- TaskFactory.cs
- EntitySqlException.cs
- XAMLParseException.cs
- TextEditorCharacters.cs
- InputLanguage.cs
- PropertyConverter.cs
- GridProviderWrapper.cs
- ImageMetadata.cs
- TreeView.cs
- BmpBitmapEncoder.cs
- WorkflowEnvironment.cs
- SafePEFileHandle.cs
- TrackingLocationCollection.cs
- HttpModulesSection.cs
- VariableReference.cs
- HtmlUtf8RawTextWriter.cs
- TextReader.cs
- ElementHost.cs
- HtmlCommandAdapter.cs
- AbsoluteQuery.cs
- Hyperlink.cs
- ValueOfAction.cs
- PointIndependentAnimationStorage.cs
- ToolTipService.cs
- Variant.cs
- CallTemplateAction.cs
- ConditionBrowserDialog.cs
- PingOptions.cs
- SchemaAttDef.cs
- DataViewManager.cs
- WindowsImpersonationContext.cs
- TabPage.cs
- EtwTrace.cs
- BehaviorEditorPart.cs
- EnvironmentPermission.cs
- DataListAutoFormat.cs
- HttpContextWrapper.cs
- IOException.cs
- ConfigurationHandlersInstallComponent.cs
- FastEncoder.cs
- PipelineDeploymentState.cs
- FilterQueryOptionExpression.cs
- HttpCapabilitiesSectionHandler.cs
- HandoffBehavior.cs
- WebPart.cs
- Speller.cs
- RenderTargetBitmap.cs
- StrongName.cs
- ParserExtension.cs
- DataGridColumnCollection.cs
- AdornerHitTestResult.cs
- Camera.cs
- CodeAttributeArgument.cs
- DoubleLinkListEnumerator.cs
- DrawingDrawingContext.cs
- XmlDataSource.cs
- GenerateTemporaryTargetAssembly.cs
- DisplayClaim.cs
- ObjectNavigationPropertyMapping.cs
- RootBrowserWindow.cs
- ImageCodecInfo.cs
- AxisAngleRotation3D.cs
- DbDataRecord.cs
- pingexception.cs
- CellTreeNodeVisitors.cs
- StorageAssociationTypeMapping.cs
- XPathSelfQuery.cs
- WindowsSolidBrush.cs
- TypedElement.cs
- AlternateView.cs
- OleDbPermission.cs
- SignatureGenerator.cs
- UIElement.cs
- DefaultAutoFieldGenerator.cs
- Rect3D.cs
- InternalBufferManager.cs
- TreeNodeBindingCollection.cs
- ExceptionUtil.cs
- Transform3D.cs
- FontFamilyConverter.cs
- Boolean.cs
- XamlPointCollectionSerializer.cs
- ActivityDesigner.cs
- ObjectReferenceStack.cs
- XmlComplianceUtil.cs
- DatatypeImplementation.cs
- BrowserDefinitionCollection.cs
- FormViewCommandEventArgs.cs
- NumericUpDownAccelerationCollection.cs
- _BaseOverlappedAsyncResult.cs
- StackSpiller.Bindings.cs
- NavigatorInput.cs
- GeneralTransform2DTo3D.cs
- Span.cs