Code:
/ DotNET / DotNET / 8.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
- MemberDescriptor.cs
- Brush.cs
- RemotingServices.cs
- Cloud.cs
- ClonableStack.cs
- TableAdapterManagerGenerator.cs
- EntityDataSourceUtil.cs
- DataListItemCollection.cs
- CustomValidator.cs
- ToolStripItemClickedEventArgs.cs
- BaseCodeDomTreeGenerator.cs
- StateChangeEvent.cs
- SpotLight.cs
- FrameAutomationPeer.cs
- ReadOnlyPropertyMetadata.cs
- GetUserPreferenceRequest.cs
- Funcletizer.cs
- WebPartConnectionCollection.cs
- EncryptedData.cs
- DBNull.cs
- ValidationRuleCollection.cs
- MetadataCacheItem.cs
- TextRange.cs
- StringInfo.cs
- EncoderReplacementFallback.cs
- Utils.cs
- HyperLinkField.cs
- SelectionListDesigner.cs
- EditorZone.cs
- Point3DCollectionConverter.cs
- UrlRoutingHandler.cs
- FlowLayoutPanel.cs
- ThemeableAttribute.cs
- WebPartDisplayMode.cs
- X509Certificate.cs
- IndicCharClassifier.cs
- XmlArrayAttribute.cs
- MultiAsyncResult.cs
- SafeThemeHandle.cs
- SystemFonts.cs
- FlowchartDesigner.Helpers.cs
- RowParagraph.cs
- CustomErrorsSection.cs
- PasswordBox.cs
- DataControlPagerLinkButton.cs
- TableFieldsEditor.cs
- GridViewSelectEventArgs.cs
- CompilerErrorCollection.cs
- ErrorWrapper.cs
- TdsParserSafeHandles.cs
- QilChoice.cs
- RequiredFieldValidator.cs
- CustomExpression.cs
- TypeHelpers.cs
- PolyQuadraticBezierSegmentFigureLogic.cs
- WebServiceData.cs
- RootProfilePropertySettingsCollection.cs
- SystemIPv6InterfaceProperties.cs
- SafeFileMappingHandle.cs
- PartitionResolver.cs
- ProcessHostServerConfig.cs
- DrawItemEvent.cs
- StringArrayConverter.cs
- WebContext.cs
- DataBoundControlAdapter.cs
- InternalsVisibleToAttribute.cs
- LineInfo.cs
- WebPartHeaderCloseVerb.cs
- ParameterElementCollection.cs
- SqlBooleanMismatchVisitor.cs
- CodeEventReferenceExpression.cs
- BevelBitmapEffect.cs
- TabControlAutomationPeer.cs
- WebPartVerb.cs
- Timeline.cs
- MessageQueuePermission.cs
- ContentOperations.cs
- Rect3D.cs
- XmlSchemaAttribute.cs
- EntityDesignPluralizationHandler.cs
- PresentationSource.cs
- SerializationFieldInfo.cs
- GorillaCodec.cs
- PackagingUtilities.cs
- MetafileHeader.cs
- Latin1Encoding.cs
- SplineQuaternionKeyFrame.cs
- HistoryEventArgs.cs
- DocumentViewerAutomationPeer.cs
- ToolStrip.cs
- WebPartZoneCollection.cs
- HttpModulesSection.cs
- TextProviderWrapper.cs
- SafeCoTaskMem.cs
- RecognizedAudio.cs
- PartialCachingAttribute.cs
- DatePickerDateValidationErrorEventArgs.cs
- ParallelDesigner.cs
- DeploymentSection.cs
- TerminatorSinks.cs