Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / whidbey / netfxsp / 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
- WebPartManagerInternals.cs
- SkinIDTypeConverter.cs
- CaseStatementProjectedSlot.cs
- Scripts.cs
- XmlSchemaDocumentation.cs
- TextCollapsingProperties.cs
- ObjectContext.cs
- URLString.cs
- XamlSerializer.cs
- HtmlImage.cs
- CornerRadius.cs
- TdsEnums.cs
- FrameworkElementAutomationPeer.cs
- PersistChildrenAttribute.cs
- XmlNodeChangedEventManager.cs
- DataServiceRequestOfT.cs
- QEncodedStream.cs
- SystemIcons.cs
- ToolStripDropDownItem.cs
- DataSet.cs
- RelatedCurrencyManager.cs
- ToolBarButton.cs
- NodeLabelEditEvent.cs
- AttachedPropertyBrowsableForTypeAttribute.cs
- ListBindableAttribute.cs
- InheritedPropertyChangedEventArgs.cs
- CellTreeNode.cs
- XmlDataSource.cs
- SymmetricSecurityBindingElement.cs
- BitmapMetadataEnumerator.cs
- CacheChildrenQuery.cs
- StandardCommands.cs
- FaultPropagationRecord.cs
- MsmqBindingElementBase.cs
- DBSqlParserTableCollection.cs
- ActivityPropertyReference.cs
- SizeF.cs
- SoundPlayerAction.cs
- AnnotationHighlightLayer.cs
- Domain.cs
- TextBreakpoint.cs
- EtwTrace.cs
- NegotiationTokenAuthenticatorState.cs
- LinkClickEvent.cs
- WebBrowserHelper.cs
- GrammarBuilderPhrase.cs
- TabletDevice.cs
- WindowsGrip.cs
- SecurityDescriptor.cs
- AsyncOperation.cs
- DefaultWorkflowTransactionService.cs
- BinaryCommonClasses.cs
- GridViewHeaderRowPresenter.cs
- BooleanFunctions.cs
- DurationConverter.cs
- AssemblyBuilderData.cs
- CorePropertiesFilter.cs
- FreezableOperations.cs
- SqlDataSourceCustomCommandPanel.cs
- ContentPresenter.cs
- AtomicFile.cs
- Propagator.Evaluator.cs
- TableStyle.cs
- InvalidDataException.cs
- WebUtil.cs
- FolderNameEditor.cs
- IdentityReference.cs
- Script.cs
- FixedSOMImage.cs
- StringValueSerializer.cs
- DataObjectFieldAttribute.cs
- CompositeCollection.cs
- ConditionalBranch.cs
- CodeMemberEvent.cs
- BindingFormattingDialog.cs
- AuthenticationConfig.cs
- StructuredTypeEmitter.cs
- SmtpSection.cs
- RefExpr.cs
- ListViewItem.cs
- ExecutedRoutedEventArgs.cs
- CodeBinaryOperatorExpression.cs
- Rules.cs
- WaitHandleCannotBeOpenedException.cs
- HMACSHA1.cs
- RijndaelManagedTransform.cs
- FindCriteriaApril2005.cs
- UserPreferenceChangingEventArgs.cs
- ApplicationSecurityManager.cs
- XmlExpressionDumper.cs
- ServiceDescription.cs
- ObjectTokenCategory.cs
- querybuilder.cs
- DataGridSortCommandEventArgs.cs
- HMACRIPEMD160.cs
- CapiHashAlgorithm.cs
- HtmlControl.cs
- KeyPressEvent.cs
- DefaultValueConverter.cs
- ProxyBuilder.cs