Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / whidbey / NetFXspW7 / 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); } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved. /*++ 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
- StringWriter.cs
- MaterialGroup.cs
- Int16Animation.cs
- CellNormalizer.cs
- XmlSchemaValidator.cs
- DataTableExtensions.cs
- DebugManager.cs
- IfAction.cs
- MultiPageTextView.cs
- BasicCellRelation.cs
- NameHandler.cs
- BaseDataBoundControl.cs
- DesignerDataParameter.cs
- UiaCoreProviderApi.cs
- SectionVisual.cs
- VersionValidator.cs
- SystemThemeKey.cs
- VisualBrush.cs
- RSAProtectedConfigurationProvider.cs
- TextLine.cs
- MouseActionConverter.cs
- LogEntry.cs
- ListBase.cs
- HttpListenerPrefixCollection.cs
- XamlTemplateSerializer.cs
- Flattener.cs
- MatrixKeyFrameCollection.cs
- XmlNodeReader.cs
- BufferedGraphicsManager.cs
- SemaphoreFullException.cs
- GenericParameterDataContract.cs
- TreeWalkHelper.cs
- TailCallAnalyzer.cs
- WebPartConnectionsEventArgs.cs
- SettingsProviderCollection.cs
- EditorBrowsableAttribute.cs
- ServerValidateEventArgs.cs
- MarshalDirectiveException.cs
- ExpandedWrapper.cs
- PermissionListSet.cs
- DataGridTextBoxColumn.cs
- FilterFactory.cs
- OptionUsage.cs
- SqlCrossApplyToCrossJoin.cs
- PlanCompiler.cs
- GroupLabel.cs
- JsonWriter.cs
- CookieParameter.cs
- ScriptIgnoreAttribute.cs
- RMEnrollmentPage3.cs
- MetabaseServerConfig.cs
- SortQuery.cs
- DataGridViewCheckBoxColumn.cs
- MetadataArtifactLoaderCompositeFile.cs
- ChildrenQuery.cs
- HtmlHistory.cs
- NotSupportedException.cs
- MdImport.cs
- InvalidPropValue.cs
- UniqueIdentifierService.cs
- Root.cs
- UnsafeNativeMethods.cs
- CharacterBufferReference.cs
- SimpleExpression.cs
- OLEDB_Util.cs
- XmlCharType.cs
- TextRenderingModeValidation.cs
- PathFigureCollection.cs
- EmptyEnumerator.cs
- SevenBitStream.cs
- SmiEventStream.cs
- TablePattern.cs
- AudioFormatConverter.cs
- XmlDocumentSerializer.cs
- DesignerCommandAdapter.cs
- HttpCacheVaryByContentEncodings.cs
- CanonicalizationDriver.cs
- ProbeDuplexAsyncResult.cs
- ExpressionBuilder.cs
- TypeUtils.cs
- SchemaImporter.cs
- EventLogPermissionHolder.cs
- ToolBar.cs
- ImageMapEventArgs.cs
- DayRenderEvent.cs
- DesignerRegionCollection.cs
- SqlConnectionFactory.cs
- prompt.cs
- ToolStripDropDownItem.cs
- HashMembershipCondition.cs
- ComPlusDiagnosticTraceRecords.cs
- MenuCommands.cs
- PropVariant.cs
- XmlSignatureManifest.cs
- OracleFactory.cs
- PathFigureCollection.cs
- HttpRequestCacheValidator.cs
- Cloud.cs
- DigestComparer.cs
- SingleAnimationBase.cs