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
- PasswordRecoveryDesigner.cs
- PtsCache.cs
- XslNumber.cs
- BindingExpressionBase.cs
- ProxyWebPartManager.cs
- SQLBytes.cs
- ProtocolElementCollection.cs
- ComNativeDescriptor.cs
- BitmapEncoder.cs
- WeakReadOnlyCollection.cs
- SiteMembershipCondition.cs
- Transform3D.cs
- LayoutDump.cs
- PageContent.cs
- LicFileLicenseProvider.cs
- AutoGeneratedFieldProperties.cs
- DesignOnlyAttribute.cs
- SafeRightsManagementHandle.cs
- Win32Exception.cs
- SafeRightsManagementSessionHandle.cs
- SafeThreadHandle.cs
- PrtCap_Base.cs
- Substitution.cs
- PasswordPropertyTextAttribute.cs
- QueryConverter.cs
- ReadOnlyDictionary.cs
- FixedHyperLink.cs
- StopStoryboard.cs
- WSDualHttpBindingElement.cs
- TransactedReceiveScope.cs
- TableItemStyle.cs
- DebugInfoGenerator.cs
- WorkflowViewManager.cs
- ExceptionTranslationTable.cs
- Header.cs
- BaseParser.cs
- UrlMapping.cs
- XsdValidatingReader.cs
- FtpWebResponse.cs
- ScrollBarAutomationPeer.cs
- WebControl.cs
- VerificationException.cs
- StylusPointPropertyInfoDefaults.cs
- ConfigurationException.cs
- EndPoint.cs
- DBConnectionString.cs
- SerializationStore.cs
- SymbolEqualComparer.cs
- TemplateBamlRecordReader.cs
- CustomErrorCollection.cs
- ToolTipService.cs
- XmlFormatReaderGenerator.cs
- PackageProperties.cs
- SwitchLevelAttribute.cs
- WebWorkflowRole.cs
- Page.cs
- AssemblyAttributesGoHere.cs
- ImageMetadata.cs
- CodeExporter.cs
- BamlCollectionHolder.cs
- Win32Interop.cs
- MouseButtonEventArgs.cs
- BitVector32.cs
- Monitor.cs
- Parameter.cs
- FixedHyperLink.cs
- BinaryQueryOperator.cs
- VisualTarget.cs
- SocketElement.cs
- CriticalFileToken.cs
- ListDataBindEventArgs.cs
- StatusBar.cs
- Terminate.cs
- CodeVariableReferenceExpression.cs
- AppliesToBehaviorDecisionTable.cs
- DetailsViewUpdateEventArgs.cs
- CheckPair.cs
- SchemaImporterExtensionElementCollection.cs
- DesignerProperties.cs
- CallContext.cs
- VisualStyleInformation.cs
- SmiEventSink.cs
- EditCommandColumn.cs
- DesignerVerb.cs
- WebDescriptionAttribute.cs
- TrustSection.cs
- PlatformCulture.cs
- SyndicationSerializer.cs
- SqlNotificationRequest.cs
- NativeCompoundFileAPIs.cs
- VScrollProperties.cs
- ScrollData.cs
- Wizard.cs
- LassoHelper.cs
- HtmlInputFile.cs
- CommonRemoteMemoryBlock.cs
- AnnotationResourceCollection.cs
- BitmapEffectDrawing.cs
- XmlDigitalSignatureProcessor.cs
- SqlVersion.cs