Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / whidbey / netfxsp / 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
- ArrangedElement.cs
- DoubleCollectionValueSerializer.cs
- TypeSystem.cs
- NullEntityWrapper.cs
- PlainXmlDeserializer.cs
- URL.cs
- GeometryCollection.cs
- GatewayDefinition.cs
- ContentDisposition.cs
- SessionStateItemCollection.cs
- EllipseGeometry.cs
- SimpleTextLine.cs
- CodeGenerationManager.cs
- CodeAttributeArgument.cs
- ObjectItemCachedAssemblyLoader.cs
- MetadataConversionError.cs
- NavigateUrlConverter.cs
- AVElementHelper.cs
- Directory.cs
- ServicesUtilities.cs
- TableParaClient.cs
- RequestQueue.cs
- MouseGestureValueSerializer.cs
- TemplateXamlTreeBuilder.cs
- CounterNameConverter.cs
- BitmapEffectRenderDataResource.cs
- XmlILModule.cs
- SQLCharsStorage.cs
- SiteOfOriginPart.cs
- WindowsListViewItem.cs
- WsdlHelpGeneratorElement.cs
- PcmConverter.cs
- xdrvalidator.cs
- JoinElimination.cs
- _WebProxyDataBuilder.cs
- CommentGlyph.cs
- SoapCodeExporter.cs
- EasingQuaternionKeyFrame.cs
- ReaderWriterLock.cs
- RC2.cs
- StorageConditionPropertyMapping.cs
- SamlConditions.cs
- SafeRightsManagementQueryHandle.cs
- DbParameterCollection.cs
- Win32Exception.cs
- TypeUtil.cs
- SqlDataSourceSelectingEventArgs.cs
- Converter.cs
- ObjectDataSourceMethodEditor.cs
- XmlSchemaInferenceException.cs
- SourceLineInfo.cs
- WindowsIPAddress.cs
- CfgParser.cs
- MsmqElementBase.cs
- _SSPISessionCache.cs
- ErasingStroke.cs
- InfoCardRSAOAEPKeyExchangeFormatter.cs
- TdsValueSetter.cs
- URLMembershipCondition.cs
- XmlSortKeyAccumulator.cs
- ListViewItemCollectionEditor.cs
- MissingManifestResourceException.cs
- SoapSchemaMember.cs
- SplineQuaternionKeyFrame.cs
- MembershipSection.cs
- Vars.cs
- Bits.cs
- DataDesignUtil.cs
- ConstNode.cs
- ActivityTrace.cs
- SqlVisitor.cs
- DiscoveryRequestHandler.cs
- Rijndael.cs
- DataBinding.cs
- HttpModuleCollection.cs
- NTAccount.cs
- RelatedImageListAttribute.cs
- CssTextWriter.cs
- ScalarConstant.cs
- ListControlConvertEventArgs.cs
- SqlDataSourceFilteringEventArgs.cs
- LogReservationCollection.cs
- CookieProtection.cs
- OutputCacheSection.cs
- StatusBarItem.cs
- TransformerInfo.cs
- IDispatchConstantAttribute.cs
- _NetworkingPerfCounters.cs
- RecoverInstanceLocksCommand.cs
- Icon.cs
- FirewallWrapper.cs
- EllipseGeometry.cs
- VariableAction.cs
- SqlDependencyListener.cs
- HtmlTableRowCollection.cs
- MultiView.cs
- ObjectSecurity.cs
- ControlValuePropertyAttribute.cs
- DataServiceHostFactory.cs
- HtmlElement.cs