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
- MediaCommands.cs
- ToolboxItem.cs
- ApplicationFileCodeDomTreeGenerator.cs
- coordinatorfactory.cs
- ProviderSettings.cs
- StopStoryboard.cs
- TraceFilter.cs
- SplitContainer.cs
- MemberJoinTreeNode.cs
- CodeRegionDirective.cs
- Trustee.cs
- XXXInfos.cs
- TCEAdapterGenerator.cs
- SmiXetterAccessMap.cs
- FeatureAttribute.cs
- FlowDocumentPage.cs
- StateManagedCollection.cs
- RegistrySecurity.cs
- AssemblyCache.cs
- Opcode.cs
- PaperSize.cs
- ScriptingScriptResourceHandlerSection.cs
- PersonalizationDictionary.cs
- DefaultParameterValueAttribute.cs
- SecurityTokenSerializer.cs
- DiagnosticTraceRecords.cs
- ClientSession.cs
- WithStatement.cs
- HttpRequest.cs
- EndEvent.cs
- FreeIndexList.cs
- MissingManifestResourceException.cs
- TransactionFlowElement.cs
- XmlNamespaceDeclarationsAttribute.cs
- XmlDictionaryReaderQuotas.cs
- Utilities.cs
- MailBnfHelper.cs
- SqlConnectionPoolProviderInfo.cs
- ScrollViewerAutomationPeer.cs
- OpCopier.cs
- ComboBoxAutomationPeer.cs
- XmlEventCache.cs
- TraceUtility.cs
- IndependentAnimationStorage.cs
- Tile.cs
- Registry.cs
- Menu.cs
- HitTestResult.cs
- PropertyAccessVisitor.cs
- WebBrowsableAttribute.cs
- ProfileEventArgs.cs
- FormatterConverter.cs
- TrustSection.cs
- RadioButton.cs
- MetadataArtifactLoaderCompositeFile.cs
- WindowsRichEditRange.cs
- XmlText.cs
- StringValidator.cs
- SpAudioStreamWrapper.cs
- ListViewItem.cs
- ClientSponsor.cs
- DoubleUtil.cs
- HMACSHA384.cs
- WindowAutomationPeer.cs
- Type.cs
- ListManagerBindingsCollection.cs
- InstanceOwner.cs
- XamlToRtfWriter.cs
- HostProtectionPermission.cs
- DataMisalignedException.cs
- RootDesignerSerializerAttribute.cs
- HandledMouseEvent.cs
- AssertFilter.cs
- SharedPersonalizationStateInfo.cs
- IDispatchConstantAttribute.cs
- IOThreadScheduler.cs
- MetaModel.cs
- ParsedAttributeCollection.cs
- GridViewRowPresenterBase.cs
- UserUseLicenseDictionaryLoader.cs
- NativeObjectSecurity.cs
- MachineKeySection.cs
- Vector3DAnimationBase.cs
- SchemaCompiler.cs
- KeySpline.cs
- SchemaCollectionPreprocessor.cs
- PreProcessInputEventArgs.cs
- SystemResourceKey.cs
- DecoderFallbackWithFailureFlag.cs
- InlineCollection.cs
- LabelEditEvent.cs
- sqlcontext.cs
- XNodeValidator.cs
- RegistrySecurity.cs
- DataGridViewRowDividerDoubleClickEventArgs.cs
- FormViewInsertEventArgs.cs
- BindingWorker.cs
- FacetValues.cs
- AggregateNode.cs
- SkewTransform.cs