Code:
/ DotNET / DotNET / 8.0 / untmp / whidbey / REDBITS / ndp / fx / src / Net / System / Net / ConnectionPoolManager.cs / 1 / ConnectionPoolManager.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- namespace System.Net { using System; using System.Collections; using System.Diagnostics; using System.Security; using System.Security.Permissions; using System.Threading; using System.Globalization; internal class ConnectionPoolManager { private static Hashtable m_ConnectionPools = new Hashtable(); // Hashtable used for connection pools private static object s_InternalSyncObject; private ConnectionPoolManager() { } private static object InternalSyncObject { get { if (s_InternalSyncObject == null) { object o = new Object(); Interlocked.CompareExchange(ref s_InternalSyncObject, o, null); } return s_InternalSyncObject; } } /*internal static ConnectionPool[] ConnectionPools { get { lock(InternalSyncObject) { ConnectionPool [] connectionPools = new ConnectionPool[m_ConnectionPools.Count]; m_ConnectionPools.CopyTo(connectionPools, 0); return connectionPools; } } } */ private static string GenerateKey(string hostName, int port, string groupName) { return hostName+"\r"+port.ToString(NumberFormatInfo.InvariantInfo)+"\r"+groupName; } internal static ConnectionPool GetConnectionPool(ServicePoint servicePoint, string groupName, CreateConnectionDelegate createConnectionCallback) { string key = GenerateKey(servicePoint.Host, servicePoint.Port, groupName); lock(InternalSyncObject) { ConnectionPool connectionPool = (ConnectionPool) m_ConnectionPools[key]; if (connectionPool == null) { connectionPool = new ConnectionPool(servicePoint, servicePoint.ConnectionLimit, 0, servicePoint.MaxIdleTime, createConnectionCallback); m_ConnectionPools[key] = connectionPool; } return connectionPool; } } /* internal static ConnectionPool GetConnectionPool(string hostName, int port, string groupName, CreateConnectionDelegate createConnectionCallback) { string key = hostName + "\r" + port.ToString(NumberFormatInfo.InvariantInfo) + "\r" + groupName; lock(InternalSyncObject) { ConnectionPool connectionPool = (ConnectionPool) m_ConnectionPools[key]; if (connectionPool == null) { ServicePoint servicePoint = ServicePointManager.FindServicePoint(new Uri("sockets://" + hostName + ":" + port.ToString(NumberFormatInfo.InvariantInfo)), null); connectionPool = new ConnectionPool(servicePoint, m_DefaultMaxPool, 0, servicePoint.MaxIdleTime, createConnectionCallback); m_ConnectionPools[key] = connectionPool; } return connectionPool; } } */ internal static bool RemoveConnectionPool(ServicePoint servicePoint, string groupName) { string key = GenerateKey(servicePoint.Host, servicePoint.Port, groupName); lock(InternalSyncObject) { ConnectionPool connectionPool = (ConnectionPool)(m_ConnectionPools[key]); if(connectionPool != null) { m_ConnectionPools[key] = null; m_ConnectionPools.Remove(key); return true; } } return false; } } }
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ComplexPropertyEntry.cs
- CodeCatchClauseCollection.cs
- EditorZoneBase.cs
- SimplePropertyEntry.cs
- PipeStream.cs
- EarlyBoundInfo.cs
- DbConnectionOptions.cs
- GeometryCombineModeValidation.cs
- TextFindEngine.cs
- TemplateComponentConnector.cs
- ChtmlTextWriter.cs
- SHA1Managed.cs
- UDPClient.cs
- FontSource.cs
- XmlAnyAttributeAttribute.cs
- DataGridViewSelectedColumnCollection.cs
- BulletedList.cs
- SchemaImporter.cs
- FillRuleValidation.cs
- _Win32.cs
- MultiAsyncResult.cs
- ObjectQueryState.cs
- AdRotator.cs
- PtsCache.cs
- ByteConverter.cs
- PointLightBase.cs
- ImageSource.cs
- PixelFormats.cs
- CultureInfoConverter.cs
- DnsPermission.cs
- NameObjectCollectionBase.cs
- XPathException.cs
- HtmlWindow.cs
- NavigatorInput.cs
- TypeDescriptionProviderAttribute.cs
- FrameworkRichTextComposition.cs
- Control.cs
- CheckBox.cs
- Lasso.cs
- PersonalizationProviderHelper.cs
- EntityDataSourceConfigureObjectContext.cs
- RowType.cs
- IndexingContentUnit.cs
- HttpConfigurationContext.cs
- GeneralTransform.cs
- FreezableOperations.cs
- XsltCompileContext.cs
- DesignTimeVisibleAttribute.cs
- CustomTypeDescriptor.cs
- CreateParams.cs
- TextParaClient.cs
- ClusterRegistryConfigurationProvider.cs
- UshortList2.cs
- RegisteredScript.cs
- EmptyStringExpandableObjectConverter.cs
- WebPartConnectionsConnectVerb.cs
- TrackingValidationObjectDictionary.cs
- DataSourceUtil.cs
- BoundField.cs
- ConstraintEnumerator.cs
- SafePEFileHandle.cs
- DesignerForm.cs
- entityreference_tresulttype.cs
- SqlCharStream.cs
- URLBuilder.cs
- FieldToken.cs
- MetadataItem_Static.cs
- DataRecordInfo.cs
- URLAttribute.cs
- XmlCharType.cs
- CharUnicodeInfo.cs
- ArgumentNullException.cs
- InternalConfigEventArgs.cs
- StringKeyFrameCollection.cs
- Setter.cs
- DummyDataSource.cs
- RegexFCD.cs
- NativeMethods.cs
- ToolStripItemCollection.cs
- HttpModuleActionCollection.cs
- HwndSubclass.cs
- AutomationProperties.cs
- odbcmetadatacolumnnames.cs
- MessageBox.cs
- LicFileLicenseProvider.cs
- ClientTargetSection.cs
- StorageAssociationTypeMapping.cs
- ItemTypeToolStripMenuItem.cs
- IntegerFacetDescriptionElement.cs
- DataFormat.cs
- AppSettingsExpressionBuilder.cs
- SendKeys.cs
- UnsafeNativeMethodsTablet.cs
- CachedRequestParams.cs
- VirtualDirectoryMappingCollection.cs
- Literal.cs
- WebPartZone.cs
- FileCodeGroup.cs
- AnnotationComponentChooser.cs
- HotSpotCollectionEditor.cs