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
- LinkConverter.cs
- WsatAdminException.cs
- InvalidEnumArgumentException.cs
- RotateTransform.cs
- CompositeControl.cs
- MethodCallConverter.cs
- ParseNumbers.cs
- EndOfStreamException.cs
- SortQueryOperator.cs
- PauseStoryboard.cs
- CodeNamespaceImportCollection.cs
- CodeCompiler.cs
- RsaEndpointIdentity.cs
- ByteStreamGeometryContext.cs
- Image.cs
- CompilerParameters.cs
- SQLDouble.cs
- PerfCounters.cs
- UrlPropertyAttribute.cs
- KeyEvent.cs
- PanelDesigner.cs
- SystemPens.cs
- DocumentPaginator.cs
- ADMembershipUser.cs
- CodeGotoStatement.cs
- UnsafeNativeMethodsCLR.cs
- TriggerActionCollection.cs
- ToolStripLocationCancelEventArgs.cs
- ContextMarshalException.cs
- DispatcherEventArgs.cs
- CellParaClient.cs
- TemplateBindingExpression.cs
- ThemeableAttribute.cs
- HttpListener.cs
- DataTemplateSelector.cs
- ServiceContractViewControl.Designer.cs
- InvokeProviderWrapper.cs
- CounterCreationDataCollection.cs
- ZipIOLocalFileDataDescriptor.cs
- LinqDataSourceEditData.cs
- PassportAuthentication.cs
- TableLayoutPanelCellPosition.cs
- XamlFrame.cs
- TraceUtils.cs
- FastEncoderWindow.cs
- ArgIterator.cs
- EventLog.cs
- InputLanguageEventArgs.cs
- FullTrustAssembliesSection.cs
- OleDbStruct.cs
- WebServiceParameterData.cs
- XmlNamespaceDeclarationsAttribute.cs
- ActiveXContainer.cs
- SqlVisitor.cs
- NameNode.cs
- ConstraintStruct.cs
- RewritingValidator.cs
- GraphicsPath.cs
- ScriptingSectionGroup.cs
- DataGridItemEventArgs.cs
- OrderedHashRepartitionEnumerator.cs
- BypassElement.cs
- QueryCacheEntry.cs
- AnnotationAuthorChangedEventArgs.cs
- ContentOnlyMessage.cs
- SelectingProviderEventArgs.cs
- BuilderPropertyEntry.cs
- EncoderBestFitFallback.cs
- LayoutManager.cs
- cache.cs
- EntityAdapter.cs
- DataGridViewColumnEventArgs.cs
- PageFunction.cs
- AssemblyFilter.cs
- PageBuildProvider.cs
- RSACryptoServiceProvider.cs
- ObjectHandle.cs
- ThrowHelper.cs
- DesignerPerfEventProvider.cs
- GeometryGroup.cs
- DesignerSerializationManager.cs
- LoadRetryConstantStrategy.cs
- ProcessHostMapPath.cs
- TextEndOfParagraph.cs
- UnsafeNativeMethods.cs
- WpfPayload.cs
- TypefaceCollection.cs
- WebUtil.cs
- SystemThemeKey.cs
- JoinTreeSlot.cs
- BrowserCapabilitiesFactory.cs
- HttpRequestBase.cs
- ToolStripTextBox.cs
- AssemblyBuilderData.cs
- DataGridViewRowHeightInfoPushedEventArgs.cs
- OperationFormatUse.cs
- CodeGroup.cs
- MsmqMessageProperty.cs
- BinaryParser.cs
- PathSegment.cs