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
- X500Name.cs
- EndpointDispatcher.cs
- SharedPerformanceCounter.cs
- ValidationErrorInfo.cs
- SapiInterop.cs
- FontWeights.cs
- AdornedElementPlaceholder.cs
- ValidationContext.cs
- XmlAnyAttributeAttribute.cs
- PersistenceMetadataNamespace.cs
- EmptyStringExpandableObjectConverter.cs
- SafeWaitHandle.cs
- URL.cs
- Dictionary.cs
- ToolStripDropDownItem.cs
- InternalConfigHost.cs
- HttpUnhandledOperationInvoker.cs
- ActivityTypeResolver.xaml.cs
- EventLogEntry.cs
- ManagementDateTime.cs
- DesignerOptions.cs
- Range.cs
- SrgsElementList.cs
- CompositeFontParser.cs
- XmlWriter.cs
- sortedlist.cs
- ContentType.cs
- GlobalizationAssembly.cs
- ArithmeticException.cs
- AutomationIdentifierGuids.cs
- TextChangedEventArgs.cs
- PropertySet.cs
- CalendarDay.cs
- GridViewCancelEditEventArgs.cs
- DynamicResourceExtension.cs
- Rect3DValueSerializer.cs
- MenuItem.cs
- TcpTransportSecurityElement.cs
- DBConnection.cs
- WeakReferenceKey.cs
- ColorConverter.cs
- CollectionViewGroupRoot.cs
- QilLiteral.cs
- Int32RectConverter.cs
- ICollection.cs
- WrapperEqualityComparer.cs
- SqlDataSourceQueryEditorForm.cs
- SystemGatewayIPAddressInformation.cs
- Int64Animation.cs
- FontWeight.cs
- AssemblySettingAttributes.cs
- EdmRelationshipRoleAttribute.cs
- TimeIntervalCollection.cs
- IsolatedStorageFileStream.cs
- DoubleLinkListEnumerator.cs
- ProxyWebPart.cs
- SqlCommandBuilder.cs
- RetrieveVirtualItemEventArgs.cs
- NativeWindow.cs
- BamlBinaryWriter.cs
- SqlAggregateChecker.cs
- SizeF.cs
- PasswordRecovery.cs
- PrintController.cs
- HighContrastHelper.cs
- GlobalizationSection.cs
- KeySpline.cs
- ManagementOptions.cs
- SerializationFieldInfo.cs
- LicenseProviderAttribute.cs
- KeySpline.cs
- DocumentsTrace.cs
- WizardStepBase.cs
- SortedSet.cs
- OdbcCommand.cs
- SatelliteContractVersionAttribute.cs
- MaterialCollection.cs
- PersistNameAttribute.cs
- CollectionCodeDomSerializer.cs
- BitmapEffectState.cs
- PointAnimationClockResource.cs
- CodePageUtils.cs
- ObjectPersistData.cs
- assemblycache.cs
- ViewStateModeByIdAttribute.cs
- TypeConverter.cs
- TableLayout.cs
- _ListenerResponseStream.cs
- MenuEventArgs.cs
- SqlUserDefinedTypeAttribute.cs
- HostProtectionException.cs
- ByteAnimationUsingKeyFrames.cs
- ToolStripDesigner.cs
- DoubleAnimationUsingKeyFrames.cs
- StylusEditingBehavior.cs
- TextEditorCharacters.cs
- PageThemeBuildProvider.cs
- RadialGradientBrush.cs
- SymbolTable.cs
- XmlSerializationGeneratedCode.cs