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
- FormViewDeleteEventArgs.cs
- RegexBoyerMoore.cs
- UpWmlPageAdapter.cs
- ControlPaint.cs
- CustomPopupPlacement.cs
- safex509handles.cs
- DockProviderWrapper.cs
- FormViewCommandEventArgs.cs
- Compiler.cs
- Int64Animation.cs
- WebPartDisplayMode.cs
- HttpStreamFormatter.cs
- ToolStripProgressBar.cs
- ACL.cs
- ErrorCodes.cs
- BasicKeyConstraint.cs
- KeysConverter.cs
- AdCreatedEventArgs.cs
- Preprocessor.cs
- SqlUserDefinedTypeAttribute.cs
- TypeSystem.cs
- MessageQueueException.cs
- DrawingContextWalker.cs
- BamlRecordHelper.cs
- LayoutEngine.cs
- TagNameToTypeMapper.cs
- DecoderNLS.cs
- ParagraphResult.cs
- RouteParametersHelper.cs
- CrossSiteScriptingValidation.cs
- UIElement.cs
- FolderBrowserDialogDesigner.cs
- DefaultValueTypeConverter.cs
- InheritedPropertyDescriptor.cs
- SecurityException.cs
- StateMachineAction.cs
- CollectionChangeEventArgs.cs
- RemotingServices.cs
- HtmlSelectionListAdapter.cs
- RectangleGeometry.cs
- TextInfo.cs
- OracleCommandSet.cs
- SqlProcedureAttribute.cs
- ACE.cs
- PublisherIdentityPermission.cs
- ReferentialConstraint.cs
- DocumentEventArgs.cs
- sqlmetadatafactory.cs
- IntranetCredentialPolicy.cs
- OrderedDictionary.cs
- FormattedText.cs
- LinearKeyFrames.cs
- Vector3DAnimationUsingKeyFrames.cs
- DataAdapter.cs
- PropertyCondition.cs
- RadioButtonBaseAdapter.cs
- XslTransform.cs
- InvalidCommandTreeException.cs
- CompiledRegexRunnerFactory.cs
- EntityContainerEmitter.cs
- ObjectDataSourceMethodEventArgs.cs
- TreeNode.cs
- MimeFormatter.cs
- loginstatus.cs
- x509utils.cs
- SmiGettersStream.cs
- CellParagraph.cs
- Span.cs
- DbModificationClause.cs
- WindowsComboBox.cs
- MessagePartDescriptionCollection.cs
- WorkflowOwnerAsyncResult.cs
- PointConverter.cs
- SystemBrushes.cs
- XmlUtilWriter.cs
- ColorAnimation.cs
- XmlHierarchicalDataSourceView.cs
- EventLogEntryCollection.cs
- DateTimeConverter2.cs
- TextStore.cs
- FileSecurity.cs
- UnsafeNativeMethods.cs
- PropertyInformation.cs
- XmlNamespaceMappingCollection.cs
- DbConnectionOptions.cs
- UndoManager.cs
- CryptoConfig.cs
- WebInvokeAttribute.cs
- SelectionProcessor.cs
- ZipIOBlockManager.cs
- SchemaConstraints.cs
- ZipIOCentralDirectoryDigitalSignature.cs
- SettingsProperty.cs
- DataRow.cs
- InvokeFunc.cs
- XmlCharType.cs
- TypeConvertions.cs
- SevenBitStream.cs
- StructuredType.cs
- TraceSection.cs