Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / infocard / Service / managed / Microsoft / InfoCards / HandleDictionary.cs / 1 / HandleDictionary.cs
//------------------------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------------------------- namespace Microsoft.InfoCards { using System; using System.Collections.Generic; using Microsoft.InfoCards.Diagnostics; using IDT=Microsoft.InfoCards.Diagnostics.InfoCardTrace; using System.Xml; // // Summary: // Implements a dictionary of Handles. The GetNewHandle method will return a handle value that is guaranteed // to be unique, an object of type TVal can then be associated with that handle value. // internal class HandleDictionary< TVal > { const int m_MaxSessionCount = Int32.MaxValue / 2; Dictionary< int, TVal > m_internalDictionary; Random m_random; // // Summary: // Returns the max number of handles this dictionary can contain. // public int MaxSize { get { return m_MaxSessionCount; } } // // Summary: // Gets the object associated with the handle value passed in as Key. // public TVal this[ int Key ] { get { return m_internalDictionary[ Key ]; } set { if ( !ContainsHandle( Key ) ) { throw IDT.ThrowHelperError( new KeyNotFoundException() ); } m_internalDictionary[ Key ] = value; } } public HandleDictionary() { m_internalDictionary = new Dictionary< int, TVal >(); m_random = new Random(); } public int GetNewHandle() { // // Limit the number of crypto sessions to make certain that // finding a random id is efficient. // if( m_internalDictionary.Count >= m_MaxSessionCount ) { throw IDT.ThrowHelperError( new MaxSessionCountExceededException() ); } // // Look for an open slot. // int handle = m_random.Next(); while( m_internalDictionary.ContainsKey( handle ) || 0 == handle ) { handle = m_random.Next(); } // // Reserve a spot for this handle. // m_internalDictionary[ handle ] = default( TVal ); return handle; } // // Summary: // Removes a handle and it's value from the collection. // public bool Remove( int key ) { return m_internalDictionary.Remove( key ); } // // Summary: // Returns true if the handle value is contained in the collection. // public bool ContainsHandle( int key ) { return m_internalDictionary.ContainsKey( key ); } } } // 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
- Attributes.cs
- PrintDialogDesigner.cs
- GrowingArray.cs
- ArraySegment.cs
- ListControl.cs
- ISCIIEncoding.cs
- HtmlTableRow.cs
- MessageContractExporter.cs
- GC.cs
- CustomGrammar.cs
- TextSegment.cs
- DeleteIndexBinder.cs
- AnimatedTypeHelpers.cs
- ZoneButton.cs
- ResolveNameEventArgs.cs
- PerformanceCounter.cs
- ListBoxChrome.cs
- OrthographicCamera.cs
- UpdateRecord.cs
- DetailsViewDeletedEventArgs.cs
- ClientApiGenerator.cs
- PngBitmapEncoder.cs
- LocalsItemDescription.cs
- Int32RectValueSerializer.cs
- Metadata.cs
- ConfigUtil.cs
- HandlerBase.cs
- DetailsViewUpdatedEventArgs.cs
- WeakReadOnlyCollection.cs
- WebService.cs
- CurrentChangingEventManager.cs
- MsmqSecureHashAlgorithm.cs
- PolicyException.cs
- UrlMapping.cs
- CellParagraph.cs
- ArrayEditor.cs
- TextUtf8RawTextWriter.cs
- SafeArrayRankMismatchException.cs
- PageAsyncTask.cs
- BaseDataBoundControl.cs
- Matrix.cs
- XomlDesignerLoader.cs
- ProjectionRewriter.cs
- InfoCardRSAOAEPKeyExchangeFormatter.cs
- DataTableClearEvent.cs
- XmlNamespaceManager.cs
- WebHttpBindingCollectionElement.cs
- SourceFileInfo.cs
- XamlGridLengthSerializer.cs
- PublisherIdentityPermission.cs
- FixedSOMFixedBlock.cs
- ContractMapping.cs
- AmbientLight.cs
- MyContact.cs
- FormsAuthenticationTicket.cs
- SafeCloseHandleCritical.cs
- DataTableReader.cs
- AVElementHelper.cs
- EntityParameterCollection.cs
- LogExtentCollection.cs
- DrawingContextWalker.cs
- CatalogZoneBase.cs
- PropertiesTab.cs
- Boolean.cs
- SqlConnectionManager.cs
- CompositeFontFamily.cs
- EmptyControlCollection.cs
- UnionCodeGroup.cs
- ColumnHeader.cs
- ProxyWebPartConnectionCollection.cs
- AtomServiceDocumentSerializer.cs
- MetadataArtifactLoader.cs
- BufferedWebEventProvider.cs
- TextEditorSpelling.cs
- ItemCollection.cs
- StorageInfo.cs
- ImmutableObjectAttribute.cs
- WindowsListView.cs
- NewArrayExpression.cs
- MetadataItem_Static.cs
- TemplateControlCodeDomTreeGenerator.cs
- TypeSystem.cs
- FileChangeNotifier.cs
- IntegerValidatorAttribute.cs
- WebPartCollection.cs
- ProgressBarBrushConverter.cs
- Frame.cs
- XmlWrappingReader.cs
- ConnectionStringEditor.cs
- XPathNavigatorReader.cs
- XamlReader.cs
- AsyncContentLoadedEventArgs.cs
- DocumentAutomationPeer.cs
- NetworkCredential.cs
- basecomparevalidator.cs
- CodeTryCatchFinallyStatement.cs
- Span.cs
- PropertyFilterAttribute.cs
- ThousandthOfEmRealPoints.cs
- MaskedTextBox.cs