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
- unitconverter.cs
- WebZone.cs
- EmptyEnumerator.cs
- CurrencyWrapper.cs
- CheckBox.cs
- Logging.cs
- DefaultSerializationProviderAttribute.cs
- UnlockInstanceCommand.cs
- FacetValueContainer.cs
- TextSearch.cs
- DecoderReplacementFallback.cs
- CreateRefExpr.cs
- RoleGroup.cs
- SoapAttributes.cs
- HtmlControlPersistable.cs
- DataColumnMapping.cs
- InputScopeConverter.cs
- EdmValidator.cs
- TextServicesHost.cs
- TableLayoutPanelCellPosition.cs
- xml.cs
- ListBoxItemAutomationPeer.cs
- TextBoxLine.cs
- WizardStepBase.cs
- Accessible.cs
- SqlProcedureAttribute.cs
- HtmlControl.cs
- DataGridViewCell.cs
- AuthenticationConfig.cs
- XmlSchema.cs
- HtmlControlDesigner.cs
- HandlerFactoryWrapper.cs
- XslAstAnalyzer.cs
- isolationinterop.cs
- TimeIntervalCollection.cs
- LockedHandleGlyph.cs
- sqlmetadatafactory.cs
- KeyTime.cs
- TraceLevelStore.cs
- HighContrastHelper.cs
- BindingsCollection.cs
- FixedTextPointer.cs
- WorkerRequest.cs
- PointValueSerializer.cs
- WebProxyScriptElement.cs
- GAC.cs
- MsmqTransportElement.cs
- LayoutExceptionEventArgs.cs
- ContentTextAutomationPeer.cs
- StaticSiteMapProvider.cs
- WebPartConnectionsCancelVerb.cs
- UnmanagedMarshal.cs
- TreeViewDesigner.cs
- XmlCharacterData.cs
- ServiceReflector.cs
- StandardCommandToolStripMenuItem.cs
- TableRowGroup.cs
- LayoutTableCell.cs
- SpeechRecognizer.cs
- MetadataCache.cs
- NonBatchDirectoryCompiler.cs
- LineUtil.cs
- IntSecurity.cs
- DockPanel.cs
- OdbcStatementHandle.cs
- OLEDB_Util.cs
- FigureParagraph.cs
- WorkflowTraceTransfer.cs
- XmlAttributeCollection.cs
- TypeFieldSchema.cs
- MenuItemBindingCollection.cs
- TemplatedWizardStep.cs
- PointKeyFrameCollection.cs
- Nodes.cs
- InfoCardService.cs
- DateTimeOffsetConverter.cs
- NavigationWindowAutomationPeer.cs
- CodeSubDirectory.cs
- PageThemeCodeDomTreeGenerator.cs
- ResourceDictionary.cs
- ImageFormatConverter.cs
- SchemaNames.cs
- MissingManifestResourceException.cs
- CodeArrayIndexerExpression.cs
- XmlNamespaceDeclarationsAttribute.cs
- Geometry.cs
- ExpressionBuilder.cs
- KerberosTokenFactoryCredential.cs
- PageVisual.cs
- SemanticKeyElement.cs
- ReturnEventArgs.cs
- SubMenuStyleCollection.cs
- Int32Converter.cs
- ObjectItemCachedAssemblyLoader.cs
- DecimalConverter.cs
- Logging.cs
- Size.cs
- MachineKeyValidationConverter.cs
- DataControlCommands.cs
- SortKey.cs