Code:
/ FX-1434 / FX-1434 / 1.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
- OutputCacheSettings.cs
- URLAttribute.cs
- IPPacketInformation.cs
- ContextQuery.cs
- XmlNotation.cs
- BaseDataBoundControl.cs
- OLEDB_Enum.cs
- XDRSchema.cs
- DrawToolTipEventArgs.cs
- FlowDocumentView.cs
- DataObject.cs
- Unit.cs
- TextureBrush.cs
- ActivationServices.cs
- XmlSchemaAll.cs
- GACMembershipCondition.cs
- XmlArrayItemAttributes.cs
- XLinq.cs
- CertificateElement.cs
- NodeFunctions.cs
- PromptBuilder.cs
- Char.cs
- SynthesizerStateChangedEventArgs.cs
- RSACryptoServiceProvider.cs
- Rect.cs
- StrongNameMembershipCondition.cs
- SpeechUI.cs
- InputElement.cs
- XmlBoundElement.cs
- TextCollapsingProperties.cs
- HandlerFactoryWrapper.cs
- EntityType.cs
- SingleTagSectionHandler.cs
- UserMapPath.cs
- RunClient.cs
- TextServicesLoader.cs
- FloatSumAggregationOperator.cs
- KeyEventArgs.cs
- CqlIdentifiers.cs
- Claim.cs
- CommonObjectSecurity.cs
- ColumnHeaderConverter.cs
- XmlSerializerAssemblyAttribute.cs
- Section.cs
- InfoCardRSAPKCS1SignatureDeformatter.cs
- PackagingUtilities.cs
- SrgsRuleRef.cs
- CompilerCollection.cs
- SystemIPAddressInformation.cs
- ButtonChrome.cs
- PTUtility.cs
- SafeMILHandle.cs
- Serialization.cs
- DeriveBytes.cs
- WebRequestModulesSection.cs
- CurrencyWrapper.cs
- DecoderNLS.cs
- FixedSOMGroup.cs
- BindingContext.cs
- XDRSchema.cs
- HandledEventArgs.cs
- WinEventWrap.cs
- SiteMapHierarchicalDataSourceView.cs
- GridViewItemAutomationPeer.cs
- VirtualPathUtility.cs
- DecoderExceptionFallback.cs
- EntityRecordInfo.cs
- DataListItem.cs
- RNGCryptoServiceProvider.cs
- DesignerLoader.cs
- LinearKeyFrames.cs
- Sql8ConformanceChecker.cs
- DATA_BLOB.cs
- XmlSchemaInclude.cs
- InfoCardArgumentException.cs
- PathSegment.cs
- ProfileSection.cs
- BinaryExpression.cs
- MethodRental.cs
- Camera.cs
- SecureEnvironment.cs
- RNGCryptoServiceProvider.cs
- EventItfInfo.cs
- DecimalStorage.cs
- ColorInterpolationModeValidation.cs
- RuleInfoComparer.cs
- StrongNameKeyPair.cs
- LoaderAllocator.cs
- CommandEventArgs.cs
- ValueType.cs
- filewebrequest.cs
- DBSqlParser.cs
- DependencyPropertyDescriptor.cs
- WindowsSecurityTokenAuthenticator.cs
- EnumerableValidator.cs
- XmlWriterDelegator.cs
- x509utils.cs
- ValueSerializerAttribute.cs
- FontSizeConverter.cs
- HMACMD5.cs