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
- GridViewEditEventArgs.cs
- DataGridRowHeader.cs
- QueryGeneratorBase.cs
- TypographyProperties.cs
- CodeGeneratorOptions.cs
- RenderingEventArgs.cs
- HtmlPanelAdapter.cs
- ThemeInfoAttribute.cs
- ClientCultureInfo.cs
- DetailsViewInsertEventArgs.cs
- SecurityException.cs
- SiteMapNodeCollection.cs
- DataSourceHelper.cs
- XpsFontSerializationService.cs
- ThicknessConverter.cs
- PropertyBuilder.cs
- PermissionListSet.cs
- TypeElement.cs
- ScriptingRoleServiceSection.cs
- SingleTagSectionHandler.cs
- IListConverters.cs
- DispatcherExceptionFilterEventArgs.cs
- SignatureHelper.cs
- IndexingContentUnit.cs
- AppSettingsExpressionBuilder.cs
- WebControl.cs
- Latin1Encoding.cs
- ExponentialEase.cs
- TreePrinter.cs
- FontDialog.cs
- BitmapEffectDrawingContent.cs
- EntityDataSourceDesigner.cs
- DataServiceException.cs
- StaticResourceExtension.cs
- EventProxy.cs
- UniformGrid.cs
- PathSegment.cs
- ToolStripContainer.cs
- relpropertyhelper.cs
- TextHidden.cs
- ToolTipService.cs
- PathTooLongException.cs
- SymmetricSecurityProtocol.cs
- ToolStripItemTextRenderEventArgs.cs
- UserCancellationException.cs
- ComPlusDiagnosticTraceSchemas.cs
- DragStartedEventArgs.cs
- SqlEnums.cs
- FileLevelControlBuilderAttribute.cs
- DbgUtil.cs
- InternalCache.cs
- PageSettings.cs
- XomlCompilerParameters.cs
- WebBrowserBase.cs
- RelationalExpressions.cs
- XmlPreloadedResolver.cs
- XmlNamespaceManager.cs
- PageStatePersister.cs
- TextEditorSelection.cs
- BuilderPropertyEntry.cs
- TableLayout.cs
- ThaiBuddhistCalendar.cs
- CommandField.cs
- IndexExpression.cs
- ColumnHeaderConverter.cs
- SoapIncludeAttribute.cs
- XmlSchemaElement.cs
- PropertyToken.cs
- QueryRelOp.cs
- SelfIssuedSamlTokenFactory.cs
- FormatterConverter.cs
- DynamicObject.cs
- DocumentOrderQuery.cs
- Axis.cs
- recordstatescratchpad.cs
- SQLByteStorage.cs
- Style.cs
- InlinedAggregationOperatorEnumerator.cs
- Geometry3D.cs
- _UriSyntax.cs
- CodeMemberEvent.cs
- ChtmlImageAdapter.cs
- Substitution.cs
- ChoiceConverter.cs
- StructuredTypeInfo.cs
- OracleBinary.cs
- BooleanAnimationUsingKeyFrames.cs
- FixedNode.cs
- SystemIPGlobalStatistics.cs
- VersionedStreamOwner.cs
- Rijndael.cs
- GroupDescription.cs
- Binding.cs
- Rijndael.cs
- BinaryObjectInfo.cs
- ClientRuntimeConfig.cs
- NumberAction.cs
- CodeMemberField.cs
- counter.cs
- XamlSerializer.cs