Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / whidbey / NetFxQFE / 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; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //------------------------------------------------------------------------------ //// 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; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- XsdBuildProvider.cs
- SparseMemoryStream.cs
- CustomCredentialPolicy.cs
- ToolStripKeyboardHandlingService.cs
- CmsInterop.cs
- Atom10ItemFormatter.cs
- ServiceOperationParameter.cs
- IdnElement.cs
- SqlCacheDependencySection.cs
- Attributes.cs
- ConfigurationValidatorAttribute.cs
- BmpBitmapEncoder.cs
- DetailsViewUpdatedEventArgs.cs
- NextPreviousPagerField.cs
- Win32SafeHandles.cs
- UserControl.cs
- XmlLanguage.cs
- SpoolingTaskBase.cs
- RawStylusInputCustomDataList.cs
- ProfessionalColorTable.cs
- CqlWriter.cs
- DocumentEventArgs.cs
- RightsDocument.cs
- CapabilitiesSection.cs
- _CommandStream.cs
- XmlObjectSerializerReadContextComplex.cs
- QueryOperationResponseOfT.cs
- CodeComment.cs
- EdmFunctionAttribute.cs
- WebServicesDescriptionAttribute.cs
- TCPClient.cs
- WebBrowserNavigatedEventHandler.cs
- httpstaticobjectscollection.cs
- DbConnectionInternal.cs
- BindingGroup.cs
- SoapIncludeAttribute.cs
- Compiler.cs
- LockingPersistenceProvider.cs
- BlurBitmapEffect.cs
- DBPropSet.cs
- DetailsViewCommandEventArgs.cs
- StateRuntime.cs
- HttpStreamMessage.cs
- DataSourceView.cs
- ClaimTypeRequirement.cs
- ScrollPatternIdentifiers.cs
- DataGridViewCellStyleChangedEventArgs.cs
- XMLSyntaxException.cs
- PathFigureCollection.cs
- ThreadInterruptedException.cs
- ToolStripGrip.cs
- CodeDOMUtility.cs
- AnnotationHighlightLayer.cs
- EllipseGeometry.cs
- Config.cs
- ToolboxCategoryItems.cs
- MexBindingElement.cs
- DataGridViewCellConverter.cs
- EdgeProfileValidation.cs
- HtmlTitle.cs
- ProcessModule.cs
- DocumentEventArgs.cs
- DataSourceControlBuilder.cs
- GetWorkflowTree.cs
- MetabaseSettings.cs
- DbReferenceCollection.cs
- XmlIlGenerator.cs
- Shape.cs
- SqlCacheDependencyDatabase.cs
- TimeSpanMinutesConverter.cs
- DataGridCellsPresenter.cs
- AssemblyResourceLoader.cs
- SearchForVirtualItemEventArgs.cs
- CodeTypeReferenceCollection.cs
- ExternalFile.cs
- MergeFilterQuery.cs
- FormViewRow.cs
- Win32Native.cs
- PassportIdentity.cs
- XmlUnspecifiedAttribute.cs
- WorkflowIdleElement.cs
- AdapterUtil.cs
- SafeLibraryHandle.cs
- cryptoapiTransform.cs
- ClientBuildManagerTypeDescriptionProviderBridge.cs
- StateManagedCollection.cs
- CompilerInfo.cs
- OdbcParameterCollection.cs
- KeyConverter.cs
- FormViewInsertedEventArgs.cs
- WindowsGraphics2.cs
- ConcurrentBag.cs
- GetImportFileNameRequest.cs
- PackageRelationshipCollection.cs
- UrlAuthorizationModule.cs
- XmlAnyElementAttribute.cs
- CompositeKey.cs
- SupportsEventValidationAttribute.cs
- TimeSpanConverter.cs
- GcHandle.cs