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
- PagesChangedEventArgs.cs
- RotationValidation.cs
- DbMetaDataColumnNames.cs
- UxThemeWrapper.cs
- WebBrowserContainer.cs
- SqlUDTStorage.cs
- ScheduleChanges.cs
- StreamSecurityUpgradeAcceptorBase.cs
- HostedImpersonationContext.cs
- OpenTypeMethods.cs
- TreeChangeInfo.cs
- TableLayoutPanelBehavior.cs
- HtmlTableCellCollection.cs
- TheQuery.cs
- ShellProvider.cs
- TitleStyle.cs
- Geometry.cs
- BaseTemplateCodeDomTreeGenerator.cs
- CommandEventArgs.cs
- AutomationTextAttribute.cs
- WebBrowser.cs
- EpmSourcePathSegment.cs
- ContextDataSource.cs
- TransformFinalBlockRequest.cs
- DataGridSortCommandEventArgs.cs
- BasicHttpSecurityElement.cs
- EntityParameterCollection.cs
- DynamicMethod.cs
- JsonCollectionDataContract.cs
- ChildDocumentBlock.cs
- HttpProtocolImporter.cs
- CommandID.cs
- Crc32.cs
- MaskInputRejectedEventArgs.cs
- TableAdapterManagerGenerator.cs
- SoapProtocolImporter.cs
- HMACSHA384.cs
- CodeTypeParameter.cs
- RelatedImageListAttribute.cs
- WindowsIPAddress.cs
- EncoderReplacementFallback.cs
- versioninfo.cs
- SemanticResultValue.cs
- Expression.cs
- DataGridViewColumnConverter.cs
- SettingsProviderCollection.cs
- PolicyLevel.cs
- XsdBuildProvider.cs
- FileEnumerator.cs
- AppModelKnownContentFactory.cs
- ZipArchive.cs
- HttpStreamXmlDictionaryWriter.cs
- EmptyControlCollection.cs
- BCLDebug.cs
- PickBranchDesigner.xaml.cs
- SubpageParaClient.cs
- DoubleCollectionConverter.cs
- Int64Converter.cs
- SocketSettings.cs
- PingOptions.cs
- DBBindings.cs
- SmtpMail.cs
- ListViewItemMouseHoverEvent.cs
- DataGridColumn.cs
- PageThemeBuildProvider.cs
- BindingWorker.cs
- BaseCodeDomTreeGenerator.cs
- DeviceOverridableAttribute.cs
- ScriptReferenceBase.cs
- UnicodeEncoding.cs
- HMACSHA1.cs
- SerializableAttribute.cs
- OleDbConnectionInternal.cs
- InternalRelationshipCollection.cs
- WriteFileContext.cs
- Attributes.cs
- ConnectionStringsExpressionEditor.cs
- EncoderFallback.cs
- EnumCodeDomSerializer.cs
- AttributeTable.cs
- ArraySubsetEnumerator.cs
- SplitterPanel.cs
- UnsafeMethods.cs
- EventSource.cs
- SspiSecurityToken.cs
- ProcessModuleCollection.cs
- TakeOrSkipWhileQueryOperator.cs
- RawTextInputReport.cs
- RelationshipNavigation.cs
- Interfaces.cs
- Soap.cs
- QuotedPairReader.cs
- BuildProviderCollection.cs
- ScriptResourceHandler.cs
- DesignerObject.cs
- HttpHandler.cs
- SecurityContextKeyIdentifierClause.cs
- FragmentNavigationEventArgs.cs
- RewritingPass.cs
- _RequestLifetimeSetter.cs