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
- BufferBuilder.cs
- ArrayConverter.cs
- FastPropertyAccessor.cs
- ComplexLine.cs
- Keywords.cs
- DesigntimeLicenseContext.cs
- BooleanStorage.cs
- AvTraceDetails.cs
- RoutedPropertyChangedEventArgs.cs
- DesignBindingEditor.cs
- DataGridViewUtilities.cs
- storagemappingitemcollection.viewdictionary.cs
- DynamicValidatorEventArgs.cs
- PagedDataSource.cs
- DrawTreeNodeEventArgs.cs
- AttachInfo.cs
- SafeNativeMethodsOther.cs
- Object.cs
- RMEnrollmentPage1.cs
- ComponentFactoryHelpers.cs
- serverconfig.cs
- StringAnimationUsingKeyFrames.cs
- XmlQueryStaticData.cs
- WindowInteractionStateTracker.cs
- ReturnType.cs
- RemotingConfigParser.cs
- XamlToRtfWriter.cs
- CatalogZoneDesigner.cs
- TypedTableBase.cs
- ToolStrip.cs
- FrameworkElement.cs
- MultipleCopiesCollection.cs
- UnionExpr.cs
- PerformanceCounterLib.cs
- ImmutablePropertyDescriptorGridEntry.cs
- DragDropHelper.cs
- PreProcessor.cs
- XmlnsCache.cs
- Rotation3D.cs
- XmlSchemaValidationException.cs
- SafeFileMapViewHandle.cs
- ClientSettings.cs
- InvalidPrinterException.cs
- HttpApplication.cs
- Message.cs
- PropertyInfoSet.cs
- XmlSerializerSection.cs
- RequiredAttributeAttribute.cs
- BinaryWriter.cs
- XmlIlGenerator.cs
- DesignUtil.cs
- BuildProvider.cs
- Freezable.cs
- ValueUnavailableException.cs
- OutputCacheProfile.cs
- SafeSystemMetrics.cs
- DataControlImageButton.cs
- NetworkInterface.cs
- WebPartVerbsEventArgs.cs
- ClientSponsor.cs
- WebPartTransformerAttribute.cs
- SelectionListDesigner.cs
- Command.cs
- FontSizeConverter.cs
- ThicknessAnimationUsingKeyFrames.cs
- SerializationEventsCache.cs
- MissingMemberException.cs
- figurelength.cs
- GZipObjectSerializer.cs
- ConstructorExpr.cs
- CommentEmitter.cs
- ContextMenuAutomationPeer.cs
- QueryUtil.cs
- DataGridColumnDropSeparator.cs
- XmlArrayItemAttributes.cs
- ClientApiGenerator.cs
- LexicalChunk.cs
- PasswordTextContainer.cs
- TypeAccessException.cs
- MultipleViewPattern.cs
- HttpFormatExtensions.cs
- ClonableStack.cs
- PrinterResolution.cs
- UserNamePasswordValidationMode.cs
- MailMessage.cs
- _ServiceNameStore.cs
- _OverlappedAsyncResult.cs
- SafeEventLogReadHandle.cs
- dbenumerator.cs
- DataControlImageButton.cs
- OdbcException.cs
- ZipIOEndOfCentralDirectoryBlock.cs
- PrintDialog.cs
- DesignTimeParseData.cs
- SpellerInterop.cs
- WebRequestModulesSection.cs
- Tracer.cs
- base64Transforms.cs
- DetailsViewInsertEventArgs.cs
- SessionStateUtil.cs