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
- XmlSchemaParticle.cs
- LocalizedNameDescriptionPair.cs
- XPathNodeInfoAtom.cs
- PtsContext.cs
- ServiceChannelProxy.cs
- ExceptionRoutedEventArgs.cs
- TextBoxLine.cs
- TCEAdapterGenerator.cs
- SvcMapFileLoader.cs
- AppLevelCompilationSectionCache.cs
- ReachSerializableProperties.cs
- XmlNamespaceMapping.cs
- DataError.cs
- Bits.cs
- FileDialogCustomPlace.cs
- SqlEnums.cs
- AnnotationResourceChangedEventArgs.cs
- SkipStoryboardToFill.cs
- FixedFlowMap.cs
- CacheVirtualItemsEvent.cs
- XmlDocumentFragment.cs
- GeneralTransformCollection.cs
- AssemblyGen.cs
- ConfigurationSection.cs
- DataGridSortCommandEventArgs.cs
- BatchParser.cs
- WindowsSlider.cs
- Point3DAnimationBase.cs
- Base64Encoder.cs
- X509Utils.cs
- InheritanceRules.cs
- SocketException.cs
- StateBag.cs
- PropertyItemInternal.cs
- DataGridTextBox.cs
- SqlVersion.cs
- Identifier.cs
- MimeWriter.cs
- Activity.cs
- TextEmbeddedObject.cs
- ObfuscateAssemblyAttribute.cs
- XmlSchemaInfo.cs
- Random.cs
- IconHelper.cs
- RemoteTokenFactory.cs
- SimpleType.cs
- Evaluator.cs
- XmlHierarchyData.cs
- Animatable.cs
- UnknownBitmapEncoder.cs
- WindowHideOrCloseTracker.cs
- SignalGate.cs
- ScrollPatternIdentifiers.cs
- RowParagraph.cs
- TraceData.cs
- SourceElementsCollection.cs
- UInt32Storage.cs
- UIElementParagraph.cs
- SmiTypedGetterSetter.cs
- DoubleUtil.cs
- OAVariantLib.cs
- MultipartIdentifier.cs
- ContractNamespaceAttribute.cs
- LightweightCodeGenerator.cs
- SequentialUshortCollection.cs
- ServiceObjectContainer.cs
- RoutingEndpointTrait.cs
- ProcessHostConfigUtils.cs
- PieceDirectory.cs
- HttpWebRequest.cs
- IPipelineRuntime.cs
- HandlerBase.cs
- MobileComponentEditorPage.cs
- ConstructorArgumentAttribute.cs
- assertwrapper.cs
- WebPartDisplayModeEventArgs.cs
- TypeResolver.cs
- TextProviderWrapper.cs
- SizeFConverter.cs
- WebPartConnectVerb.cs
- _HeaderInfo.cs
- ProcessHostMapPath.cs
- Message.cs
- HttpCookie.cs
- IsolatedStorageFile.cs
- StringCollectionEditor.cs
- ISAPIApplicationHost.cs
- RequestCacheEntry.cs
- EmptyImpersonationContext.cs
- OracleNumber.cs
- HtmlContainerControl.cs
- BuildManagerHost.cs
- WindowVisualStateTracker.cs
- RpcResponse.cs
- X509Certificate.cs
- TemplateManager.cs
- PagesSection.cs
- WebPartConnectionCollection.cs
- SecondaryViewProvider.cs
- Console.cs