Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / whidbey / NetFXspW7 / 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
- LineInfo.cs
- SoapReflectionImporter.cs
- ACE.cs
- SimpleExpression.cs
- processwaithandle.cs
- SoapHttpTransportImporter.cs
- Membership.cs
- WriterOutput.cs
- IApplicationTrustManager.cs
- TextAnchor.cs
- SpotLight.cs
- EventEntry.cs
- GestureRecognitionResult.cs
- Deflater.cs
- Point3DIndependentAnimationStorage.cs
- HostingEnvironment.cs
- SoapExtension.cs
- CodeStatement.cs
- WebPartDescriptionCollection.cs
- Pkcs7Signer.cs
- DataShape.cs
- OutputCacheSection.cs
- SvcMapFileLoader.cs
- PolicyUnit.cs
- ClipboardProcessor.cs
- WebEventCodes.cs
- RelationshipType.cs
- GatewayIPAddressInformationCollection.cs
- SQLByte.cs
- MenuEventArgs.cs
- RadioButtonBaseAdapter.cs
- XmlDataCollection.cs
- CutCopyPasteHelper.cs
- PersonalizationState.cs
- QilList.cs
- KeyedHashAlgorithm.cs
- TaskFormBase.cs
- Unit.cs
- AttachmentCollection.cs
- sqlpipe.cs
- OutputCacheSection.cs
- DocumentEventArgs.cs
- DataGridViewCellLinkedList.cs
- ListItem.cs
- ConfigXmlText.cs
- PhysicalAddress.cs
- SingleObjectCollection.cs
- PageWrapper.cs
- Margins.cs
- HttpPostProtocolImporter.cs
- FilterEventArgs.cs
- ProxyHwnd.cs
- ArrangedElementCollection.cs
- Binding.cs
- System.Data.OracleClient_BID.cs
- DataPagerFieldCommandEventArgs.cs
- StaticFileHandler.cs
- TextProviderWrapper.cs
- RequestResizeEvent.cs
- StringUtil.cs
- UnsafeNativeMethods.cs
- InstanceHandleConflictException.cs
- Int32Rect.cs
- NavigatorOutput.cs
- controlskin.cs
- TypeLibConverter.cs
- XmlnsPrefixAttribute.cs
- CqlLexer.cs
- BeginEvent.cs
- GetMemberBinder.cs
- MultiSelector.cs
- TemplateBindingExtensionConverter.cs
- PointValueSerializer.cs
- ImportContext.cs
- MetadataCacheItem.cs
- CriticalHandle.cs
- TearOffProxy.cs
- WebResourceUtil.cs
- MimeMapping.cs
- ConfigurationSectionGroup.cs
- MobileErrorInfo.cs
- CacheOutputQuery.cs
- ArrangedElement.cs
- WindowsBrush.cs
- TimelineClockCollection.cs
- ILGenerator.cs
- _BasicClient.cs
- DockEditor.cs
- sortedlist.cs
- PackUriHelper.cs
- SqlEnums.cs
- AlphabeticalEnumConverter.cs
- ToggleProviderWrapper.cs
- ControlIdConverter.cs
- HtmlInputHidden.cs
- HeaderPanel.cs
- CopyEncoder.cs
- EventMappingSettingsCollection.cs
- HtmlTableRow.cs
- XPathParser.cs