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
- Vector3DValueSerializer.cs
- Size.cs
- SupportingTokenChannel.cs
- DoubleStorage.cs
- ReferencedAssembly.cs
- UserControlCodeDomTreeGenerator.cs
- MappableObjectManager.cs
- cookiecollection.cs
- MLangCodePageEncoding.cs
- URLIdentityPermission.cs
- TextEndOfLine.cs
- DrawListViewSubItemEventArgs.cs
- DataPagerFieldItem.cs
- Lasso.cs
- Group.cs
- NameValueConfigurationCollection.cs
- InteropExecutor.cs
- DataBindingCollection.cs
- Journal.cs
- DebuggerAttributes.cs
- PassportAuthentication.cs
- Control.cs
- ScriptControlDescriptor.cs
- RegisteredDisposeScript.cs
- SoapCodeExporter.cs
- RegistrySecurity.cs
- ParseHttpDate.cs
- DesignerVerbCollection.cs
- ExecutorLocksHeldException.cs
- FormView.cs
- ListControl.cs
- ScopelessEnumAttribute.cs
- BindingContext.cs
- RectValueSerializer.cs
- RefreshPropertiesAttribute.cs
- DragStartedEventArgs.cs
- LZCodec.cs
- HttpContextWrapper.cs
- DeploymentSection.cs
- ServiceDescriptionData.cs
- DataServiceHostFactory.cs
- SafeFileMappingHandle.cs
- XmlSerializer.cs
- WindowsPrincipal.cs
- DbConnectionFactory.cs
- AssemblyAssociatedContentFileAttribute.cs
- RTTypeWrapper.cs
- Point4DValueSerializer.cs
- CapabilitiesSection.cs
- HttpApplicationFactory.cs
- ComboBoxRenderer.cs
- BidPrivateBase.cs
- DayRenderEvent.cs
- ListControl.cs
- RenderCapability.cs
- DataGridRow.cs
- ContractMapping.cs
- IOException.cs
- ObjectDataProvider.cs
- AddInPipelineAttributes.cs
- CommentEmitter.cs
- OperandQuery.cs
- FixedBufferAttribute.cs
- ActiveXSite.cs
- IChannel.cs
- ClientTarget.cs
- SafeCryptHandles.cs
- TableHeaderCell.cs
- DecimalConverter.cs
- VScrollProperties.cs
- PrimitiveXmlSerializers.cs
- SerTrace.cs
- DocumentationServerProtocol.cs
- SmtpTransport.cs
- CacheMode.cs
- EntityViewContainer.cs
- SchemaObjectWriter.cs
- VoiceChangeEventArgs.cs
- DocobjHost.cs
- TableRow.cs
- RectConverter.cs
- XmlValueConverter.cs
- SqlNotificationRequest.cs
- StrongName.cs
- InkPresenterAutomationPeer.cs
- TextTreeObjectNode.cs
- SecurityResources.cs
- ProfileParameter.cs
- SubMenuStyleCollectionEditor.cs
- RemotingConfiguration.cs
- DataRowChangeEvent.cs
- MetadataItem_Static.cs
- WrappedIUnknown.cs
- Events.cs
- DockPatternIdentifiers.cs
- JournalEntryListConverter.cs
- DetailsViewUpdatedEventArgs.cs
- HandlerBase.cs
- ObjectDataSourceView.cs
- COM2IProvidePropertyBuilderHandler.cs