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
- CodeConditionStatement.cs
- DropDownList.cs
- StylusPointProperty.cs
- FrameworkRichTextComposition.cs
- ToolStripPanelRow.cs
- Buffer.cs
- SecurityIdentifierElement.cs
- BinaryObjectInfo.cs
- Crc32Helper.cs
- TypeInitializationException.cs
- DeferredTextReference.cs
- ResourceSet.cs
- BaseResourcesBuildProvider.cs
- DebuggerAttributes.cs
- EastAsianLunisolarCalendar.cs
- OciHandle.cs
- Dispatcher.cs
- DefaultParameterValueAttribute.cs
- DoubleAnimationBase.cs
- XmlComplianceUtil.cs
- AxDesigner.cs
- XamlPointCollectionSerializer.cs
- ManagedIStream.cs
- CodeSnippetStatement.cs
- ResourcePool.cs
- XmlQualifiedName.cs
- CompilationAssemblyInstallComponent.cs
- EmptyElement.cs
- WebPartCatalogAddVerb.cs
- SafeNativeMethods.cs
- DivideByZeroException.cs
- Substitution.cs
- BamlTreeMap.cs
- XmlWriterTraceListener.cs
- PropertyInformation.cs
- MenuTracker.cs
- InputLangChangeEvent.cs
- SQLString.cs
- XmlNodeReader.cs
- AsyncSerializedWorker.cs
- FileDialog_Vista_Interop.cs
- RelationshipType.cs
- SendMessageRecord.cs
- CodeTryCatchFinallyStatement.cs
- TextParentUndoUnit.cs
- TimeSpanSecondsOrInfiniteConverter.cs
- IOThreadTimer.cs
- ELinqQueryState.cs
- TimeoutException.cs
- SplineKeyFrames.cs
- formatter.cs
- DataServiceResponse.cs
- XslAstAnalyzer.cs
- XmlQualifiedName.cs
- EntityContainerRelationshipSetEnd.cs
- BlurBitmapEffect.cs
- DurableMessageDispatchInspector.cs
- EntityTypeEmitter.cs
- OutputCacheModule.cs
- SourceElementsCollection.cs
- FormatSelectingMessageInspector.cs
- TextEditorTyping.cs
- ServiceBuildProvider.cs
- RangeBaseAutomationPeer.cs
- TabControlEvent.cs
- TypeResolvingOptionsAttribute.cs
- FormatException.cs
- HyperLink.cs
- XmlSchemaComplexContentExtension.cs
- XPathNodeHelper.cs
- SqlServices.cs
- StorageMappingItemLoader.cs
- ProtocolsSection.cs
- RoutingTable.cs
- TextSchema.cs
- Effect.cs
- ModuleElement.cs
- Attribute.cs
- EventSinkHelperWriter.cs
- StagingAreaInputItem.cs
- ListViewContainer.cs
- PromptEventArgs.cs
- SqlTypeConverter.cs
- SolidColorBrush.cs
- OutOfMemoryException.cs
- HostSecurityManager.cs
- EventSourceCreationData.cs
- ViewBox.cs
- ProfileSettingsCollection.cs
- XmlTextEncoder.cs
- Int32Animation.cs
- WebDisplayNameAttribute.cs
- input.cs
- SiteMapNodeCollection.cs
- SizeConverter.cs
- AttributeUsageAttribute.cs
- RoutedUICommand.cs
- MessageParameterAttribute.cs
- AccessedThroughPropertyAttribute.cs
- Cell.cs