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
- PolyLineSegment.cs
- PreservationFileReader.cs
- TableLayoutRowStyleCollection.cs
- PriorityQueue.cs
- IgnoreDataMemberAttribute.cs
- figurelengthconverter.cs
- HelpKeywordAttribute.cs
- OleServicesContext.cs
- CharacterBuffer.cs
- ProviderBase.cs
- ColorPalette.cs
- PopOutPanel.cs
- ExpressionDumper.cs
- CacheDependency.cs
- TreeIterator.cs
- oledbconnectionstring.cs
- DataTableClearEvent.cs
- ManifestSignatureInformation.cs
- SiteMapDataSource.cs
- PieceNameHelper.cs
- GlyphInfoList.cs
- ProxyAttribute.cs
- DiagnosticTraceSource.cs
- _SafeNetHandles.cs
- GcSettings.cs
- TdsValueSetter.cs
- ContainerParagraph.cs
- GenerateHelper.cs
- SubclassTypeValidator.cs
- WFItemsToSpacerVisibility.cs
- Literal.cs
- WorkflowOperationFault.cs
- UnknownBitmapDecoder.cs
- WindowsListViewItem.cs
- XmlILOptimizerVisitor.cs
- Command.cs
- CodeGotoStatement.cs
- ErrorWebPart.cs
- FontWeights.cs
- TrackingServices.cs
- ComponentResourceKeyConverter.cs
- FormClosedEvent.cs
- HuffModule.cs
- xsdvalidator.cs
- OnOperation.cs
- ContainerControl.cs
- AddInActivator.cs
- WebPartCloseVerb.cs
- CustomCategoryAttribute.cs
- CurrencyWrapper.cs
- ConfigsHelper.cs
- ProfileModule.cs
- BooleanFacetDescriptionElement.cs
- OperandQuery.cs
- GridView.cs
- CustomErrorCollection.cs
- RegexGroup.cs
- WpfKnownMemberInvoker.cs
- CollectionViewProxy.cs
- LinkedResourceCollection.cs
- XmlNodeWriter.cs
- OdbcConnectionOpen.cs
- ApplicationFileParser.cs
- Matrix.cs
- ConfigurationProperty.cs
- BamlLocalizableResourceKey.cs
- MetadataArtifactLoaderCompositeFile.cs
- SemanticResolver.cs
- FactoryMaker.cs
- AuthenticatingEventArgs.cs
- ExpressionLexer.cs
- SqlClientFactory.cs
- TypeSemantics.cs
- GridEntryCollection.cs
- CorePropertiesFilter.cs
- DmlSqlGenerator.cs
- DesignerAttributeInfo.cs
- OleDbErrorCollection.cs
- CompilerScopeManager.cs
- DataGridViewColumnConverter.cs
- ObjectDataSourceMethodEventArgs.cs
- ValueTypeIndexerReference.cs
- Win32Exception.cs
- OperandQuery.cs
- DateTime.cs
- WbemException.cs
- TCPClient.cs
- ContextMenuAutomationPeer.cs
- ConnectionConsumerAttribute.cs
- CompilerLocalReference.cs
- ReachDocumentSequenceSerializer.cs
- PowerModeChangedEventArgs.cs
- FacetValues.cs
- PartialCachingControl.cs
- SiteMapNodeItem.cs
- ConstraintManager.cs
- EventManager.cs
- FlowDocumentView.cs
- Semaphore.cs
- BindingParameterCollection.cs