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
- HorizontalAlignConverter.cs
- SoapMessage.cs
- DocumentGrid.cs
- BitmapCache.cs
- CompiledAction.cs
- SafePEFileHandle.cs
- VScrollBar.cs
- User.cs
- WindowsFormsSectionHandler.cs
- ToolStripPanelRenderEventArgs.cs
- HtmlTableRowCollection.cs
- RawStylusInputReport.cs
- ArithmeticException.cs
- ClientUrlResolverWrapper.cs
- SystemException.cs
- ZipArchive.cs
- SingleConverter.cs
- ObjectSecurityT.cs
- RenderContext.cs
- TextEditorSelection.cs
- FormsAuthenticationCredentials.cs
- PhysicalOps.cs
- ObjectDataSourceWizardForm.cs
- KeyTimeConverter.cs
- SecurityKeyUsage.cs
- EdmToObjectNamespaceMap.cs
- TransformProviderWrapper.cs
- MetaColumn.cs
- ContentDisposition.cs
- PageCatalogPart.cs
- SocketPermission.cs
- ResourceWriter.cs
- WebZone.cs
- RowToParametersTransformer.cs
- SerializationObjectManager.cs
- RootNamespaceAttribute.cs
- MachineKeyConverter.cs
- Queue.cs
- exports.cs
- ProvidersHelper.cs
- diagnosticsswitches.cs
- SkipQueryOptionExpression.cs
- MouseBinding.cs
- CodeTypeParameter.cs
- HealthMonitoringSection.cs
- WindowsFormsSectionHandler.cs
- ContractMapping.cs
- HitTestParameters.cs
- EdmRelationshipRoleAttribute.cs
- ScriptServiceAttribute.cs
- DispatchChannelSink.cs
- HtmlHead.cs
- BitmapEffectInput.cs
- Int16AnimationUsingKeyFrames.cs
- XmlTextWriter.cs
- SqlDataSourceStatusEventArgs.cs
- XsdValidatingReader.cs
- LinqDataSourceInsertEventArgs.cs
- XmlReflectionMember.cs
- Part.cs
- IDQuery.cs
- StylusCollection.cs
- XmlObjectSerializerWriteContextComplexJson.cs
- PeerName.cs
- HostedTransportConfigurationManager.cs
- SharedUtils.cs
- ScrollProperties.cs
- ClientProtocol.cs
- UnionQueryOperator.cs
- ConnectionPointCookie.cs
- AdornerHitTestResult.cs
- GraphicsContainer.cs
- ToolStripGrip.cs
- CookieParameter.cs
- SimpleHandlerBuildProvider.cs
- NativeMethods.cs
- WindowsGraphics2.cs
- StreamUpgradeProvider.cs
- CustomError.cs
- MaterialGroup.cs
- ProfilePropertyMetadata.cs
- BindingSource.cs
- XmlSchemaValidationException.cs
- DrawingContextWalker.cs
- IntSecurity.cs
- RestClientProxyHandler.cs
- DrawingCollection.cs
- BuildProviderUtils.cs
- BitStack.cs
- DesignerToolStripControlHost.cs
- GridView.cs
- BaseCAMarshaler.cs
- AsymmetricKeyExchangeFormatter.cs
- Canonicalizers.cs
- ObjectQueryState.cs
- TimelineCollection.cs
- Literal.cs
- MetadataItemSerializer.cs
- MethodBuilder.cs
- PageBreakRecord.cs