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
- CheckBox.cs
- QilStrConcat.cs
- LinqMaximalSubtreeNominator.cs
- SchemaAttDef.cs
- DoubleCollection.cs
- DataSourceConverter.cs
- SoapServerProtocol.cs
- EventWaitHandle.cs
- RewritingProcessor.cs
- PrintController.cs
- DbParameterHelper.cs
- Timer.cs
- FilterableAttribute.cs
- XmlJsonReader.cs
- ExclusiveTcpListener.cs
- EntityDataSourceColumn.cs
- Paragraph.cs
- SynchronousChannel.cs
- TextElementAutomationPeer.cs
- XmlDataSource.cs
- SchemaLookupTable.cs
- TableLayoutSettingsTypeConverter.cs
- TransformConverter.cs
- XmlAggregates.cs
- RecognizeCompletedEventArgs.cs
- TextTreeDeleteContentUndoUnit.cs
- ListViewSortEventArgs.cs
- DataException.cs
- NameTable.cs
- ExceptionWrapper.cs
- FigureParaClient.cs
- HostingEnvironment.cs
- DataObjectCopyingEventArgs.cs
- InvokeBinder.cs
- ListViewSelectEventArgs.cs
- RemoteWebConfigurationHostStream.cs
- ImportCatalogPart.cs
- DocumentViewerHelper.cs
- EncryptedPackageFilter.cs
- SerializableAttribute.cs
- NavigationService.cs
- ObjectCacheSettings.cs
- DecimalKeyFrameCollection.cs
- XamlParser.cs
- ProtocolsConfiguration.cs
- DataServiceRequestOfT.cs
- ScaleTransform3D.cs
- XmlC14NWriter.cs
- ExpressionWriter.cs
- RTLAwareMessageBox.cs
- DataControlField.cs
- ProtocolViolationException.cs
- TextBox.cs
- StyleReferenceConverter.cs
- TreeViewItemAutomationPeer.cs
- QueryOperationResponseOfT.cs
- HitTestParameters.cs
- DataFormats.cs
- DeclaredTypeValidator.cs
- ResetableIterator.cs
- SecurityVerifiedMessage.cs
- UnsignedPublishLicense.cs
- SqlTypesSchemaImporter.cs
- PackagePart.cs
- RectAnimationClockResource.cs
- InternalResources.cs
- SafeMemoryMappedFileHandle.cs
- ListSortDescriptionCollection.cs
- Stroke.cs
- CodeTypeMember.cs
- ComPlusSynchronizationContext.cs
- BinaryObjectWriter.cs
- PatternMatcher.cs
- FileReservationCollection.cs
- ReadOnlyDictionary.cs
- WebPartAuthorizationEventArgs.cs
- QilXmlWriter.cs
- IteratorDescriptor.cs
- InputLanguageSource.cs
- MessageQueuePermission.cs
- ValueSerializer.cs
- FreezableDefaultValueFactory.cs
- DecimalFormatter.cs
- WebPartEditVerb.cs
- HScrollBar.cs
- IdentityNotMappedException.cs
- TreeNodeStyleCollection.cs
- MemberJoinTreeNode.cs
- AuthenticationService.cs
- UserControlCodeDomTreeGenerator.cs
- PlaceHolder.cs
- DateTimePicker.cs
- DispatchWrapper.cs
- UmAlQuraCalendar.cs
- XmlNodeChangedEventManager.cs
- LogEntrySerializationException.cs
- XmlCharCheckingReader.cs
- FrameworkElementFactoryMarkupObject.cs
- DataViewListener.cs
- RSACryptoServiceProvider.cs