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
- MetafileHeaderEmf.cs
- WebEventCodes.cs
- MSAAEventDispatcher.cs
- OdbcConnectionStringbuilder.cs
- OutOfMemoryException.cs
- StylusButton.cs
- HostingEnvironment.cs
- TriState.cs
- ListControl.cs
- RecordsAffectedEventArgs.cs
- AuthorizationSection.cs
- SharedTcpTransportManager.cs
- FacetDescriptionElement.cs
- QuerySettings.cs
- Bitmap.cs
- Pair.cs
- AlignmentYValidation.cs
- XmlDownloadManager.cs
- CollectionChangedEventManager.cs
- ItemCollection.cs
- LayoutExceptionEventArgs.cs
- SecurityTokenException.cs
- TimeSpan.cs
- ObjRef.cs
- NetworkInterface.cs
- NotCondition.cs
- MessageQueueTransaction.cs
- DriveInfo.cs
- StylusDevice.cs
- SafeMILHandle.cs
- Rules.cs
- ListComponentEditor.cs
- NestedContainer.cs
- BoundField.cs
- SafeCoTaskMem.cs
- PolicyValidationException.cs
- _emptywebproxy.cs
- MemoryStream.cs
- DbgUtil.cs
- WindowsAuthenticationModule.cs
- SocketAddress.cs
- AssemblySettingAttributes.cs
- DebugTraceHelper.cs
- NamedElement.cs
- BaseParser.cs
- SamlSubjectStatement.cs
- PopupEventArgs.cs
- GlyphRunDrawing.cs
- CoreSwitches.cs
- EditCommandColumn.cs
- SapiAttributeParser.cs
- SimpleHandlerBuildProvider.cs
- TdsParameterSetter.cs
- mansign.cs
- ListView.cs
- ServiceCredentialsSecurityTokenManager.cs
- ContainsRowNumberChecker.cs
- DetailsView.cs
- CalendarButtonAutomationPeer.cs
- ResourceCodeDomSerializer.cs
- FormatConvertedBitmap.cs
- HMACSHA384.cs
- StateMachineAction.cs
- NotImplementedException.cs
- GenericsInstances.cs
- DisposableCollectionWrapper.cs
- XmlLoader.cs
- GlobalAllocSafeHandle.cs
- Rules.cs
- DataGridViewLinkCell.cs
- CfgSemanticTag.cs
- AlgoModule.cs
- SelectedCellsCollection.cs
- SpellerStatusTable.cs
- NavigationService.cs
- GridViewSelectEventArgs.cs
- ServiceBusyException.cs
- SqlTriggerAttribute.cs
- WorkflowInlining.cs
- ListBoxAutomationPeer.cs
- DocumentPageViewAutomationPeer.cs
- SHA1CryptoServiceProvider.cs
- InternalTypeHelper.cs
- KeyFrames.cs
- HandleExceptionArgs.cs
- DbProviderFactoriesConfigurationHandler.cs
- ImageFormatConverter.cs
- SqlDataSourceConfigureFilterForm.cs
- NameNode.cs
- CapacityStreamGeometryContext.cs
- ColumnCollection.cs
- RelationshipNavigation.cs
- WebScriptServiceHost.cs
- XmlBinaryReader.cs
- SystemGatewayIPAddressInformation.cs
- WS2007HttpBinding.cs
- ContactManager.cs
- VectorValueSerializer.cs
- FormViewDeletedEventArgs.cs
- HostingPreferredMapPath.cs