Code:
/ FX-1434 / FX-1434 / 1.0 / untmp / whidbey / REDBITS / 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; } } }
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- BooleanConverter.cs
- DiagnosticTrace.cs
- SystemMulticastIPAddressInformation.cs
- Durable.cs
- XmlWhitespace.cs
- PageContentAsyncResult.cs
- SoapReflectionImporter.cs
- CryptoApi.cs
- SqlMethodCallConverter.cs
- ISFClipboardData.cs
- UIAgentMonitor.cs
- DesignerImageAdapter.cs
- RewritingPass.cs
- SpoolingTaskBase.cs
- OpenTypeLayoutCache.cs
- SystemUdpStatistics.cs
- FunctionQuery.cs
- GenericRootAutomationPeer.cs
- DataGridCellItemAutomationPeer.cs
- MenuItemBindingCollection.cs
- MonitoringDescriptionAttribute.cs
- IsolationInterop.cs
- Enum.cs
- WsdlInspector.cs
- RangeExpression.cs
- FixedTextView.cs
- ApplicationManager.cs
- MtomMessageEncodingBindingElement.cs
- DesignerLoader.cs
- ReaderWriterLock.cs
- SiteOfOriginContainer.cs
- CursorConverter.cs
- CodeStatementCollection.cs
- XmlSerializerVersionAttribute.cs
- BreakRecordTable.cs
- TextChange.cs
- AnnotationObservableCollection.cs
- CodeMemberProperty.cs
- ValidationHelper.cs
- BufferModesCollection.cs
- MaskedTextBoxDesigner.cs
- CmsUtils.cs
- FrameworkElementFactory.cs
- OracleConnectionStringBuilder.cs
- SchemaCollectionCompiler.cs
- TextDpi.cs
- InfoCardAsymmetricCrypto.cs
- SQLBytes.cs
- validationstate.cs
- SizeChangedEventArgs.cs
- SizeKeyFrameCollection.cs
- PeerApplication.cs
- CodeExpressionCollection.cs
- ScrollChrome.cs
- AutoGeneratedField.cs
- ByteConverter.cs
- ApplicationId.cs
- InputLanguageSource.cs
- PropertyInfoSet.cs
- ToolTipAutomationPeer.cs
- CharConverter.cs
- RegexNode.cs
- QueryTask.cs
- DbConnectionInternal.cs
- InvokeMemberBinder.cs
- Model3DGroup.cs
- ToolboxItemWrapper.cs
- ExpressionBuilder.cs
- SystemMulticastIPAddressInformation.cs
- FlowDocumentReader.cs
- MetadataItemSerializer.cs
- MILUtilities.cs
- QilChoice.cs
- ProfileBuildProvider.cs
- SelectQueryOperator.cs
- RowTypePropertyElement.cs
- ClientConfigPaths.cs
- RemotingSurrogateSelector.cs
- Vector3D.cs
- Processor.cs
- HtmlSelect.cs
- InkCanvas.cs
- LocationReferenceValue.cs
- MessageDroppedTraceRecord.cs
- PrivateUnsafeNativeCompoundFileMethods.cs
- Expression.cs
- mansign.cs
- EntityDataSourceWrapperCollection.cs
- MachineKeyConverter.cs
- MulticastIPAddressInformationCollection.cs
- Point3D.cs
- BuildProvider.cs
- GeneralTransform3D.cs
- DataObject.cs
- ClientEventManager.cs
- DataGridItemEventArgs.cs
- SectionInput.cs
- SqlConnectionManager.cs
- LinqTreeNodeEvaluator.cs
- TextDecorationLocationValidation.cs