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
- ConstantExpression.cs
- KeyGesture.cs
- ListViewTableCell.cs
- StylusEditingBehavior.cs
- EdgeProfileValidation.cs
- WindowsEditBox.cs
- COM2ExtendedBrowsingHandler.cs
- PropertyChangingEventArgs.cs
- DataSetUtil.cs
- recordstatescratchpad.cs
- DynamicActionMessageFilter.cs
- DispatcherSynchronizationContext.cs
- Delay.cs
- AssemblyEvidenceFactory.cs
- HtmlCalendarAdapter.cs
- AffineTransform3D.cs
- XmlTextReaderImpl.cs
- ThreadStartException.cs
- Compress.cs
- PropertyMetadata.cs
- DeclaredTypeValidator.cs
- XmlDomTextWriter.cs
- Lasso.cs
- AssociationType.cs
- ChameleonKey.cs
- SqlFunctionAttribute.cs
- ApplicationBuildProvider.cs
- GradientStop.cs
- AssemblyBuilder.cs
- MaterializeFromAtom.cs
- WebMethodAttribute.cs
- Size.cs
- HttpRequestCacheValidator.cs
- ConnectionManagementElementCollection.cs
- CasesDictionary.cs
- ExtendedProtectionPolicyTypeConverter.cs
- SAPIEngineTypes.cs
- isolationinterop.cs
- ModuleBuilderData.cs
- LocationSectionRecord.cs
- FileSystemWatcher.cs
- DbConnectionHelper.cs
- MarshalDirectiveException.cs
- ItemCheckEvent.cs
- Util.cs
- Point.cs
- MessagePropertyVariants.cs
- BindingSource.cs
- CounterNameConverter.cs
- UIElementParagraph.cs
- AssociationSetEnd.cs
- EmptyEnumerable.cs
- MemberInfoSerializationHolder.cs
- DependencyPropertyConverter.cs
- RecipientInfo.cs
- ConversionContext.cs
- CustomUserNameSecurityTokenAuthenticator.cs
- ImpersonateTokenRef.cs
- SafeNativeMethods.cs
- LinqDataSourceContextData.cs
- DataGridViewTextBoxColumn.cs
- ToolStripArrowRenderEventArgs.cs
- NumberSubstitution.cs
- SapiRecoInterop.cs
- HttpRequestWrapper.cs
- AddInController.cs
- CompensatableSequenceActivity.cs
- DataTableCollection.cs
- ToolboxCategory.cs
- ExpressionBinding.cs
- SocketPermission.cs
- ComponentSerializationService.cs
- AndCondition.cs
- Scheduler.cs
- FieldInfo.cs
- DataTablePropertyDescriptor.cs
- DataSetViewSchema.cs
- Configuration.cs
- COM2ComponentEditor.cs
- CryptoApi.cs
- SystemIcmpV6Statistics.cs
- PopupEventArgs.cs
- BitStream.cs
- ExpressionNode.cs
- Canonicalizers.cs
- ReadOnlyDictionary.cs
- TabControlEvent.cs
- ServiceHttpModule.cs
- OracleSqlParser.cs
- LocalBuilder.cs
- NetWebProxyFinder.cs
- ToolStripPanel.cs
- sqlnorm.cs
- TextServicesCompartmentContext.cs
- GeometryGroup.cs
- GiveFeedbackEventArgs.cs
- Help.cs
- HandleExceptionArgs.cs
- RuleSetDialog.cs
- ReplyChannelAcceptor.cs