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
- CellParagraph.cs
- BitmapEffectOutputConnector.cs
- FunctionImportMapping.cs
- LayoutInformation.cs
- OrderedHashRepartitionEnumerator.cs
- BufferedReadStream.cs
- XmlWriterTraceListener.cs
- InvokePatternIdentifiers.cs
- EntityRecordInfo.cs
- StringExpressionSet.cs
- CreateParams.cs
- SiteMapSection.cs
- BinarySerializer.cs
- ProtectedUri.cs
- ContractComponent.cs
- ProcessStartInfo.cs
- CodePageUtils.cs
- QilReference.cs
- MILUtilities.cs
- DataGridViewAutoSizeModeEventArgs.cs
- LinqDataSourceContextEventArgs.cs
- WebContext.cs
- SqlBooleanizer.cs
- CodeArrayCreateExpression.cs
- SQLGuid.cs
- DbConnectionPoolIdentity.cs
- SmiRecordBuffer.cs
- Vector.cs
- QilList.cs
- HMACSHA384.cs
- ServicePoint.cs
- FormatException.cs
- DisplayNameAttribute.cs
- SmtpLoginAuthenticationModule.cs
- ItemList.cs
- SchemaTableOptionalColumn.cs
- MonthChangedEventArgs.cs
- SqlDataReader.cs
- TransformDescriptor.cs
- RowParagraph.cs
- UnknownWrapper.cs
- FrameworkReadOnlyPropertyMetadata.cs
- SamlNameIdentifierClaimResource.cs
- ManipulationLogic.cs
- MailDefinitionBodyFileNameEditor.cs
- XmlSecureResolver.cs
- RadioButtonFlatAdapter.cs
- X509CertificateValidationMode.cs
- CodeTryCatchFinallyStatement.cs
- DataGridRowClipboardEventArgs.cs
- DocumentXPathNavigator.cs
- FactoryMaker.cs
- PageBuildProvider.cs
- GetWorkflowTree.cs
- DoubleAnimationUsingKeyFrames.cs
- ItemsPanelTemplate.cs
- ChangeBlockUndoRecord.cs
- WindowsAuthenticationModule.cs
- PasswordRecoveryAutoFormat.cs
- COM2AboutBoxPropertyDescriptor.cs
- ViewStateException.cs
- SR.cs
- ExceptionNotification.cs
- MsmqMessageSerializationFormat.cs
- DataRecord.cs
- XamlFilter.cs
- MediaSystem.cs
- DBSchemaRow.cs
- UnsafeNativeMethodsCLR.cs
- CopyAttributesAction.cs
- ReadingWritingEntityEventArgs.cs
- NestPullup.cs
- StrongNameIdentityPermission.cs
- BulletedList.cs
- StructuralCache.cs
- AnimatedTypeHelpers.cs
- X509Chain.cs
- PerformanceCounterPermissionEntry.cs
- InputScopeManager.cs
- CompositeControl.cs
- BitmapEffectGroup.cs
- Boolean.cs
- SourceFilter.cs
- TreeNodeMouseHoverEvent.cs
- CharacterString.cs
- LicenseProviderAttribute.cs
- CharUnicodeInfo.cs
- ServiceHttpModule.cs
- HMACSHA512.cs
- AnnotationDocumentPaginator.cs
- CompoundFileDeflateTransform.cs
- IPAddress.cs
- ColorTransformHelper.cs
- AppDomainFactory.cs
- FontDriver.cs
- InternalConfigHost.cs
- XmlWrappingReader.cs
- XamlVector3DCollectionSerializer.cs
- ShapingWorkspace.cs
- FontNamesConverter.cs