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
- AnonymousIdentificationSection.cs
- GridPattern.cs
- PropertyCollection.cs
- EventRoute.cs
- TcpTransportElement.cs
- UTF7Encoding.cs
- FixedSOMPageConstructor.cs
- JsonReaderDelegator.cs
- OdbcParameterCollection.cs
- PopOutPanel.cs
- Slider.cs
- DetailsViewUpdatedEventArgs.cs
- SqlDataSourceFilteringEventArgs.cs
- XmlUtf8RawTextWriter.cs
- DataGridViewLayoutData.cs
- ComplexBindingPropertiesAttribute.cs
- IProducerConsumerCollection.cs
- DropSource.cs
- RegexParser.cs
- bindurihelper.cs
- SamlSubject.cs
- Timer.cs
- CodeMethodMap.cs
- Image.cs
- PackWebRequest.cs
- HtmlTableRowCollection.cs
- ControllableStoryboardAction.cs
- TargetException.cs
- ShellProvider.cs
- MenuItem.cs
- SelectionItemPattern.cs
- SHA512Managed.cs
- TagPrefixAttribute.cs
- SystemIPInterfaceStatistics.cs
- XmlSchemaChoice.cs
- PanelStyle.cs
- ExtendedPropertyDescriptor.cs
- TaskHelper.cs
- TextViewSelectionProcessor.cs
- HostingEnvironment.cs
- Types.cs
- FormViewCommandEventArgs.cs
- HttpCachePolicy.cs
- ITreeGenerator.cs
- FormViewPagerRow.cs
- XslAst.cs
- Msec.cs
- JoinGraph.cs
- LineBreak.cs
- SessionIDManager.cs
- DataTableExtensions.cs
- LinqToSqlWrapper.cs
- FrameworkObject.cs
- XPathParser.cs
- DataGridViewCellStyleContentChangedEventArgs.cs
- _WinHttpWebProxyDataBuilder.cs
- TextUtf8RawTextWriter.cs
- Expressions.cs
- WebContentFormatHelper.cs
- Container.cs
- XmlAggregates.cs
- UiaCoreApi.cs
- EntityModelSchemaGenerator.cs
- MemberNameValidator.cs
- SoapElementAttribute.cs
- DataGridViewHeaderCell.cs
- WmlCalendarAdapter.cs
- RadioButton.cs
- WindowsIPAddress.cs
- HttpWriter.cs
- FileUtil.cs
- Attachment.cs
- DbConnectionPoolGroupProviderInfo.cs
- ObjectSpanRewriter.cs
- ListBindableAttribute.cs
- EncryptedData.cs
- HandlerFactoryCache.cs
- SqlParameterCollection.cs
- ScriptingSectionGroup.cs
- PageTheme.cs
- PartialCachingAttribute.cs
- webeventbuffer.cs
- ErrorFormatterPage.cs
- FormViewInsertEventArgs.cs
- ReferenceEqualityComparer.cs
- RequiredFieldValidator.cs
- KeyProperty.cs
- SectionRecord.cs
- XmlSchemaSimpleTypeRestriction.cs
- EntityDataSourceContextCreatingEventArgs.cs
- Journal.cs
- StatusBarDrawItemEvent.cs
- Size.cs
- CopyOfAction.cs
- BasicHttpSecurity.cs
- PDBReader.cs
- ScriptMethodAttribute.cs
- StringDictionary.cs
- CodeExpressionStatement.cs
- Function.cs