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
- DataSourceGroupCollection.cs
- DocumentOrderQuery.cs
- AncillaryOps.cs
- autovalidator.cs
- ScrollChrome.cs
- DbProviderManifest.cs
- HandlerBase.cs
- SHA1Managed.cs
- PropertyCollection.cs
- SafeCertificateContext.cs
- SessionEndingEventArgs.cs
- SqlBuilder.cs
- BamlLocalizableResourceKey.cs
- WinFormsComponentEditor.cs
- Baml6ConstructorInfo.cs
- ThreadStateException.cs
- DataSourceView.cs
- SQLByte.cs
- WindowsFormsSectionHandler.cs
- TlsnegoTokenAuthenticator.cs
- PointHitTestResult.cs
- XmlNamespaceMapping.cs
- NavigationWindowAutomationPeer.cs
- StateMachineWorkflow.cs
- SafeNativeMethods.cs
- documentation.cs
- TypeDependencyAttribute.cs
- MessageDecoder.cs
- DatagramAdapter.cs
- CopyAttributesAction.cs
- TimeSpanConverter.cs
- PopupRootAutomationPeer.cs
- infer.cs
- CalendarTable.cs
- WebBrowserSiteBase.cs
- securitymgrsite.cs
- BasicExpressionVisitor.cs
- SortQuery.cs
- DataGridTableCollection.cs
- DefaultTextStoreTextComposition.cs
- XmlBinaryWriterSession.cs
- EventLogInternal.cs
- ColorTransform.cs
- RepeaterDesigner.cs
- WindowsListViewScroll.cs
- DataGridViewRowStateChangedEventArgs.cs
- IPGlobalProperties.cs
- ThicknessAnimationBase.cs
- Trigger.cs
- OwnerDrawPropertyBag.cs
- Panel.cs
- RevocationPoint.cs
- XmlMemberMapping.cs
- XmlBinaryReader.cs
- HwndKeyboardInputProvider.cs
- InstanceKeyView.cs
- ContextStack.cs
- PropertyValidationContext.cs
- MSAAWinEventWrap.cs
- RadioButtonRenderer.cs
- XXXInfos.cs
- RoleService.cs
- PenLineJoinValidation.cs
- ToolStripItemTextRenderEventArgs.cs
- SiteMapDataSource.cs
- SqlClientWrapperSmiStreamChars.cs
- TypedElement.cs
- ProcessModelInfo.cs
- TriggerAction.cs
- WindowsFont.cs
- WrapPanel.cs
- ScriptingWebServicesSectionGroup.cs
- SessionStateItemCollection.cs
- WinInet.cs
- SelectionRange.cs
- CodeSubDirectory.cs
- UnsafeNativeMethodsPenimc.cs
- AsyncCompletedEventArgs.cs
- TargetInvocationException.cs
- DBSchemaRow.cs
- PrintPreviewGraphics.cs
- HttpDebugHandler.cs
- StringTraceRecord.cs
- ResourcePermissionBase.cs
- DeploymentSection.cs
- CommonRemoteMemoryBlock.cs
- MsmqProcessProtocolHandler.cs
- ResXResourceSet.cs
- TransportListener.cs
- Label.cs
- CodeExpressionRuleDeclaration.cs
- PageWrapper.cs
- CompensatableTransactionScopeActivityDesigner.cs
- _BaseOverlappedAsyncResult.cs
- _ProxyChain.cs
- OdbcCommandBuilder.cs
- SiteMap.cs
- DataGridCell.cs
- HttpProfileGroupBase.cs
- _UriTypeConverter.cs