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
- ContainerCodeDomSerializer.cs
- RuleEngine.cs
- ProgressBarBrushConverter.cs
- Rules.cs
- HtmlElementCollection.cs
- EditorPartChrome.cs
- WindowsAuthenticationEventArgs.cs
- Formatter.cs
- OdbcRowUpdatingEvent.cs
- IPGlobalProperties.cs
- XmlExtensionFunction.cs
- XmlDocumentType.cs
- DefaultParameterValueAttribute.cs
- DataTemplate.cs
- WindowsAuthenticationEventArgs.cs
- ISAPIWorkerRequest.cs
- ButtonPopupAdapter.cs
- DesignOnlyAttribute.cs
- StateManagedCollection.cs
- PeerTransportListenAddressValidator.cs
- CodeIdentifiers.cs
- APCustomTypeDescriptor.cs
- MetabaseServerConfig.cs
- ComponentChangedEvent.cs
- Int64Animation.cs
- MissingSatelliteAssemblyException.cs
- Model3D.cs
- ELinqQueryState.cs
- InkCanvas.cs
- DataGridViewAutoSizeColumnModeEventArgs.cs
- BindingContext.cs
- ToolBar.cs
- SqlDataSourceEnumerator.cs
- TextRunCache.cs
- SimpleBitVector32.cs
- DataGridItem.cs
- SystemDiagnosticsSection.cs
- XmlSchemaNotation.cs
- ViewPort3D.cs
- EntityDataSourceSelectedEventArgs.cs
- SizeAnimationClockResource.cs
- ResourcePool.cs
- UnsafeNativeMethods.cs
- Configuration.cs
- ExtendedPropertyInfo.cs
- ConfigurationSectionCollection.cs
- OutputScopeManager.cs
- ColumnMap.cs
- LockedActivityGlyph.cs
- ToolStripDropDownItemDesigner.cs
- DnsPermission.cs
- TextDocumentView.cs
- __Error.cs
- MeasurementDCInfo.cs
- DoubleLinkList.cs
- RectangleConverter.cs
- MouseDevice.cs
- MatrixCamera.cs
- AnimationLayer.cs
- WorkflowHostingResponseContext.cs
- ValueTypeFieldReference.cs
- BeginEvent.cs
- ZipIORawDataFileBlock.cs
- AutoGeneratedFieldProperties.cs
- FixedPageAutomationPeer.cs
- SystemPens.cs
- SimpleBitVector32.cs
- WebPartVerbsEventArgs.cs
- DocumentSequenceHighlightLayer.cs
- RepeaterItem.cs
- RuntimeConfigLKG.cs
- FixUpCollection.cs
- JoinGraph.cs
- ThemeConfigurationDialog.cs
- __Filters.cs
- IArgumentProvider.cs
- CryptoConfig.cs
- HierarchicalDataTemplate.cs
- SettingsContext.cs
- ConfigurationSchemaErrors.cs
- ISessionStateStore.cs
- RIPEMD160Managed.cs
- SequenceDesigner.cs
- ManagementNamedValueCollection.cs
- SmtpClient.cs
- SafeArrayTypeMismatchException.cs
- WinInet.cs
- Hex.cs
- DirectionalLight.cs
- UnsafeNativeMethods.cs
- Executor.cs
- Int32RectValueSerializer.cs
- DataBoundControlDesigner.cs
- CodeIdentifiers.cs
- PriorityRange.cs
- BitStack.cs
- CompModHelpers.cs
- LoginView.cs
- ReflectionUtil.cs
- SqlExpressionNullability.cs