Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / whidbey / NetFxQFE / 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
- ImageAttributes.cs
- PolicyStatement.cs
- X509ChainElement.cs
- PasswordRecoveryDesigner.cs
- HandleCollector.cs
- SerializationObjectManager.cs
- SecurityDescriptor.cs
- DataPagerFieldCommandEventArgs.cs
- UrlAuthFailedErrorFormatter.cs
- SqlTriggerContext.cs
- ValidationResult.cs
- References.cs
- ProjectionPath.cs
- InvokeMethodActivity.cs
- SQLDouble.cs
- PassportAuthenticationModule.cs
- TargetConverter.cs
- CommunicationObjectFaultedException.cs
- ExceptionUtil.cs
- CollectionEditVerbManager.cs
- PeerApplicationLaunchInfo.cs
- CorrelationManager.cs
- ProjectionPlan.cs
- CroppedBitmap.cs
- SqlAliaser.cs
- XamlReaderHelper.cs
- XPathNavigatorKeyComparer.cs
- PrtTicket_Public_Simple.cs
- QuotedPrintableStream.cs
- ISAPIWorkerRequest.cs
- ActivityDesignerHighlighter.cs
- FlowDocument.cs
- LexicalChunk.cs
- HttpWebRequest.cs
- ProcessStartInfo.cs
- EventMappingSettingsCollection.cs
- jithelpers.cs
- DataBoundControlHelper.cs
- ContextStaticAttribute.cs
- GraphicsState.cs
- UrlMappingsSection.cs
- FileDialog_Vista.cs
- XmlSchemaImporter.cs
- RevocationPoint.cs
- LicenseProviderAttribute.cs
- ProxyGenerator.cs
- ArraySegment.cs
- InputGestureCollection.cs
- FlowDocumentScrollViewerAutomationPeer.cs
- AssemblyInfo.cs
- LocationSectionRecord.cs
- FixedSOMTableCell.cs
- HandlerBase.cs
- LicenseProviderAttribute.cs
- DeclaredTypeValidator.cs
- CatalogZone.cs
- WindowsGraphics2.cs
- ResourceDescriptionAttribute.cs
- InputReport.cs
- FileUpload.cs
- Style.cs
- CompilationUtil.cs
- TextServicesManager.cs
- FreeFormPanel.cs
- CriticalFileToken.cs
- Model3DCollection.cs
- SHA1CryptoServiceProvider.cs
- AnimationClock.cs
- StoreItemCollection.cs
- Selection.cs
- XmlWriterTraceListener.cs
- WindowsListViewItemCheckBox.cs
- WebEventTraceProvider.cs
- QuaternionAnimation.cs
- PropertyGrid.cs
- UnsafeNetInfoNativeMethods.cs
- UnmanagedMarshal.cs
- ChannelSinkStacks.cs
- SqlEnums.cs
- SerializerDescriptor.cs
- StringArrayConverter.cs
- MenuItemCollectionEditorDialog.cs
- BasicHttpMessageCredentialType.cs
- WebControlsSection.cs
- Matrix3DValueSerializer.cs
- StylusPointProperties.cs
- ListenDesigner.cs
- RootNamespaceAttribute.cs
- Matrix.cs
- EdmEntityTypeAttribute.cs
- CodeCastExpression.cs
- FontWeight.cs
- Executor.cs
- InputScopeConverter.cs
- OdbcConnectionFactory.cs
- WindowsSecurityTokenAuthenticator.cs
- ApplicationFileParser.cs
- ClientType.cs
- ServiceMetadataPublishingElement.cs
- ActiveDocumentEvent.cs