Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / NetFx35 / System.ServiceModel.Web / System / ServiceModel / Dispatcher / NameValueCache.cs / 1305376 / NameValueCache.cs
//------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------- using System; using System.Collections; using System.Collections.Concurrent; using System.Linq; using System.Text; using System.Threading; namespace System.ServiceModel.Dispatcher { class NameValueCache{ // The NameValueCache implements a structure that uses a dictionary to map objects to // indices of an array of cache entries. This allows us to store the cache entries in // the order in which they were added to the cache, and yet still lookup any cache entry. // The eviction policy of the cache is to evict the least-recently-added cache entry. // Using a pointer to the next available cache entry in the array, we can always be sure // that the given entry is the oldest entry. Hashtable cache; string[] currentKeys; int nextAvailableCacheIndex; object cachelock; internal const int maxNumberofEntriesInCache = 16; public NameValueCache() : this(maxNumberofEntriesInCache) { } public NameValueCache(int maxCacheEntries) { cache = new Hashtable(); currentKeys = new string[maxCacheEntries]; cachelock = new object(); } public T Lookup(string key) { return (T)cache[key]; } public void AddOrUpdate(string key, T value) { lock (cache) { if (!cache.ContainsKey(key)) { if (!String.IsNullOrEmpty(currentKeys[nextAvailableCacheIndex])) { cache.Remove(currentKeys[nextAvailableCacheIndex]); } currentKeys[nextAvailableCacheIndex] = key; nextAvailableCacheIndex = ++nextAvailableCacheIndex % currentKeys.Length; } cache[key] = value; } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ExternalException.cs
- ProvideValueServiceProvider.cs
- Transform3D.cs
- PropertyTabAttribute.cs
- SafeProcessHandle.cs
- PenThreadPool.cs
- XmlSerializableReader.cs
- FilePrompt.cs
- PseudoWebRequest.cs
- ClientSettingsSection.cs
- ListenerConstants.cs
- InfoCardRSAPKCS1SignatureDeformatter.cs
- ThousandthOfEmRealPoints.cs
- TranslateTransform.cs
- DataTemplate.cs
- FontStretches.cs
- OperationGenerator.cs
- odbcmetadatacollectionnames.cs
- XmlArrayItemAttribute.cs
- TableLayoutPanelDesigner.cs
- WebRequestModuleElement.cs
- StyleSelector.cs
- DataObjectEventArgs.cs
- AdjustableArrowCap.cs
- WebControlsSection.cs
- MeasureItemEvent.cs
- GenericTextProperties.cs
- ChildrenQuery.cs
- DecimalMinMaxAggregationOperator.cs
- TypedDatasetGenerator.cs
- TrackingAnnotationCollection.cs
- Random.cs
- BinaryParser.cs
- DataObjectFieldAttribute.cs
- ToolStripContentPanelRenderEventArgs.cs
- XmlAttributeOverrides.cs
- ChildDocumentBlock.cs
- PrimitiveXmlSerializers.cs
- SafePointer.cs
- PackageRelationshipCollection.cs
- ColumnResizeAdorner.cs
- RootBrowserWindowProxy.cs
- DataSourceBooleanViewSchemaConverter.cs
- FilterQuery.cs
- CallbackException.cs
- X509UI.cs
- ObjectItemCollection.cs
- FactoryRecord.cs
- InfoCardRSAPKCS1SignatureFormatter.cs
- PlainXmlWriter.cs
- ToolbarAUtomationPeer.cs
- MexHttpBindingElement.cs
- SeekableReadStream.cs
- BitmapCacheBrush.cs
- NativeMethods.cs
- NumberFormatInfo.cs
- WebPartTransformer.cs
- formatter.cs
- BamlWriter.cs
- ScaleTransform.cs
- TypeReference.cs
- input.cs
- ToolTipService.cs
- SafeFindHandle.cs
- IgnorePropertiesAttribute.cs
- ValueProviderWrapper.cs
- PriorityItem.cs
- ToolStripOverflow.cs
- DataSourceControl.cs
- MimeObjectFactory.cs
- WaitForChangedResult.cs
- MemoryRecordBuffer.cs
- FixedBufferAttribute.cs
- StateWorkerRequest.cs
- UserControl.cs
- NavigationService.cs
- SynchronizationContext.cs
- WebServiceClientProxyGenerator.cs
- ErrorTolerantObjectWriter.cs
- MissingFieldException.cs
- shaperfactoryquerycachekey.cs
- WizardForm.cs
- SafeUserTokenHandle.cs
- TdsParserStaticMethods.cs
- Journal.cs
- HintTextMaxWidthConverter.cs
- XamlBuildTaskServices.cs
- ReflectionServiceProvider.cs
- OpCellTreeNode.cs
- _KerberosClient.cs
- SmtpReplyReader.cs
- Odbc32.cs
- Stream.cs
- QueryParameter.cs
- CommandPlan.cs
- ControlPaint.cs
- NeutralResourcesLanguageAttribute.cs
- XmlCharacterData.cs
- CustomLineCap.cs
- DesignTimeParseData.cs