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
- RemotingAttributes.cs
- PageHandlerFactory.cs
- KerberosTicketHashIdentifierClause.cs
- DataGridViewCellStyleEditor.cs
- _BufferOffsetSize.cs
- ConnectionsZone.cs
- UIntPtr.cs
- WebException.cs
- HwndSourceKeyboardInputSite.cs
- InternalConfigConfigurationFactory.cs
- DesignerTransactionCloseEvent.cs
- TextTreeNode.cs
- LinqDataView.cs
- Timer.cs
- FrameworkElement.cs
- SyntaxCheck.cs
- KeyEventArgs.cs
- DBSqlParser.cs
- DBDataPermissionAttribute.cs
- NavigatorInvalidBodyAccessException.cs
- UriTemplateQueryValue.cs
- DeviceSpecificDialogCachedState.cs
- Variable.cs
- UnsafeNativeMethods.cs
- Label.cs
- FormsIdentity.cs
- SqlWriter.cs
- ImageSource.cs
- TrustLevelCollection.cs
- InfoCardRequestException.cs
- ImageMap.cs
- ProcessingInstructionAction.cs
- SQLCharsStorage.cs
- shaper.cs
- RoleManagerEventArgs.cs
- DataSourceSelectArguments.cs
- SqlBuilder.cs
- DataServiceResponse.cs
- InfoCardRSAPKCS1KeyExchangeDeformatter.cs
- HiddenFieldPageStatePersister.cs
- DataViewSetting.cs
- TextFindEngine.cs
- AssemblyNameProxy.cs
- IgnoreFileBuildProvider.cs
- QilGenerator.cs
- FileChangesMonitor.cs
- AnnotationComponentChooser.cs
- DbConnectionPoolOptions.cs
- WSSecureConversationDec2005.cs
- PeerHelpers.cs
- SystemTcpConnection.cs
- XmlSchemaComplexContentRestriction.cs
- QueryHandler.cs
- DoubleAnimation.cs
- RepeaterItemCollection.cs
- MetadataArtifactLoaderXmlReaderWrapper.cs
- TypeLibConverter.cs
- LinkButton.cs
- FirstMatchCodeGroup.cs
- ToolStripRendererSwitcher.cs
- RepeatButtonAutomationPeer.cs
- AdornerLayer.cs
- SiteMapProvider.cs
- UidManager.cs
- TypeToken.cs
- EntitySqlQueryCacheKey.cs
- AuthenticationConfig.cs
- StrokeNodeOperations2.cs
- coordinatorfactory.cs
- AudioLevelUpdatedEventArgs.cs
- AssemblyBuilderData.cs
- Brushes.cs
- StringStorage.cs
- ImageAnimator.cs
- IdnMapping.cs
- AudioException.cs
- WorkflowPrinting.cs
- IdleTimeoutMonitor.cs
- TranslateTransform3D.cs
- WmlPanelAdapter.cs
- DescriptionAttribute.cs
- XamlDesignerSerializationManager.cs
- WithStatement.cs
- SchemaImporterExtensionElementCollection.cs
- DeviceSpecificChoiceCollection.cs
- AppSettingsExpressionBuilder.cs
- DrawingBrush.cs
- ArgIterator.cs
- LineSegment.cs
- EasingFunctionBase.cs
- CharacterMetrics.cs
- ObjectContextServiceProvider.cs
- DataGridViewImageCell.cs
- ImmutableObjectAttribute.cs
- StorageBasedPackageProperties.cs
- OleDbRowUpdatedEvent.cs
- WindowsListViewGroup.cs
- AttachmentCollection.cs
- Slider.cs
- UrlPath.cs