Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / whidbey / NetFxQFE / 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; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //------------------------------------------------------------------------------ //// 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; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ForEachAction.cs
- LocalizableResourceBuilder.cs
- RotateTransform.cs
- _SSPIWrapper.cs
- TextCollapsingProperties.cs
- EntityDataSourceChangingEventArgs.cs
- TraceContext.cs
- PictureBox.cs
- AsyncWaitHandle.cs
- TiffBitmapEncoder.cs
- SudsParser.cs
- BrushConverter.cs
- DoubleConverter.cs
- AutomationElement.cs
- FixedSOMContainer.cs
- SQLByte.cs
- CheckBoxFlatAdapter.cs
- ThemeDirectoryCompiler.cs
- QueryParameter.cs
- XmlSchemaSimpleContentRestriction.cs
- ExpressionBinding.cs
- XmlSerializableWriter.cs
- CodeGroup.cs
- FormViewPagerRow.cs
- AudioFormatConverter.cs
- TextDecorationLocationValidation.cs
- Parser.cs
- AssemblyHash.cs
- FieldToken.cs
- PathTooLongException.cs
- CombinedGeometry.cs
- TextSelection.cs
- InternalEnumValidatorAttribute.cs
- UpDownBase.cs
- SqlConnection.cs
- RegistrySecurity.cs
- ErrorFormatterPage.cs
- ClientSession.cs
- DataGridViewCellEventArgs.cs
- ExtentJoinTreeNode.cs
- SubqueryTrackingVisitor.cs
- RootProjectionNode.cs
- DesignerSelectionListAdapter.cs
- EntityDataSourceChangedEventArgs.cs
- DesignerVerbCollection.cs
- XmlNodeChangedEventArgs.cs
- safelinkcollection.cs
- EntryPointNotFoundException.cs
- CultureSpecificCharacterBufferRange.cs
- MessageVersionConverter.cs
- EventDescriptorCollection.cs
- TrustLevel.cs
- PenContext.cs
- ExceptionRoutedEventArgs.cs
- MergeFilterQuery.cs
- SplitterEvent.cs
- TabPage.cs
- EntityTemplateFactory.cs
- Sentence.cs
- XmlEnumAttribute.cs
- GraphicsContainer.cs
- HitTestResult.cs
- CustomAttribute.cs
- DoubleAnimation.cs
- SamlSerializer.cs
- CodeParameterDeclarationExpression.cs
- BlurEffect.cs
- EntityStoreSchemaGenerator.cs
- SparseMemoryStream.cs
- XmlQueryOutput.cs
- HtmlFormParameterReader.cs
- OdbcInfoMessageEvent.cs
- Size.cs
- StructuredTypeEmitter.cs
- ResolveNameEventArgs.cs
- HtmlForm.cs
- ColumnWidthChangingEvent.cs
- SingleAnimation.cs
- GridViewRowEventArgs.cs
- DockProviderWrapper.cs
- OneOfElement.cs
- EntityDataSourceChangingEventArgs.cs
- CharacterHit.cs
- InkPresenterAutomationPeer.cs
- OSFeature.cs
- CommonGetThemePartSize.cs
- smtppermission.cs
- ReferentialConstraint.cs
- PersonalizationState.cs
- Condition.cs
- DiscoveryMessageProperty.cs
- SimpleMailWebEventProvider.cs
- CodeDOMProvider.cs
- VerificationAttribute.cs
- CultureTableRecord.cs
- CompositionAdorner.cs
- BaseCollection.cs
- StringWriter.cs
- DataTableExtensions.cs
- Splitter.cs