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
- CoTaskMemUnicodeSafeHandle.cs
- FontFamilyConverter.cs
- RotateTransform.cs
- EmissiveMaterial.cs
- InvokeProviderWrapper.cs
- Double.cs
- QuotedPrintableStream.cs
- PrintPreviewDialog.cs
- PeerPresenceInfo.cs
- FunctionNode.cs
- ComponentChangingEvent.cs
- ConfigurationLoader.cs
- MenuBase.cs
- PngBitmapEncoder.cs
- SafeCryptHandles.cs
- BitmapEffectCollection.cs
- PropertyInformationCollection.cs
- EventLogRecord.cs
- ObjectResult.cs
- TimelineCollection.cs
- EntityDataSourceWizardForm.cs
- SetterBase.cs
- WebPartCloseVerb.cs
- AnimationLayer.cs
- Attachment.cs
- XPathDescendantIterator.cs
- XmlObjectSerializerContext.cs
- SafeCryptContextHandle.cs
- ScriptReference.cs
- WmfPlaceableFileHeader.cs
- ClientRuntimeConfig.cs
- Int32Rect.cs
- DataGridViewRowCancelEventArgs.cs
- ConnectionPointCookie.cs
- CheckBoxStandardAdapter.cs
- SemanticResolver.cs
- WebPartVerbCollection.cs
- StringAnimationUsingKeyFrames.cs
- ColumnResult.cs
- BufferedStream.cs
- Light.cs
- Rule.cs
- CompensationHandlingFilter.cs
- SqlMetaData.cs
- CachedTypeface.cs
- WorkflowApplicationIdleEventArgs.cs
- InternalConfigSettingsFactory.cs
- RowVisual.cs
- RowToParametersTransformer.cs
- OleDbEnumerator.cs
- _PooledStream.cs
- GridViewAutomationPeer.cs
- CommandPlan.cs
- OleDbMetaDataFactory.cs
- ListItemViewAttribute.cs
- PaperSize.cs
- ValidationPropertyAttribute.cs
- ProfilePropertyNameValidator.cs
- FlowDocumentReaderAutomationPeer.cs
- SqlPersonalizationProvider.cs
- DrawItemEvent.cs
- HtmlInputButton.cs
- IndexingContentUnit.cs
- XmlDocumentType.cs
- StructuredType.cs
- RenderData.cs
- BitmapSource.cs
- LassoHelper.cs
- ResourcePool.cs
- WeakReferenceList.cs
- DoubleMinMaxAggregationOperator.cs
- RegexCompiler.cs
- Point3DValueSerializer.cs
- ZipIOEndOfCentralDirectoryBlock.cs
- XsdBuilder.cs
- WmpBitmapDecoder.cs
- AliasGenerator.cs
- ArgIterator.cs
- EditingCoordinator.cs
- ManifestSignatureInformation.cs
- BamlRecords.cs
- XPathItem.cs
- ExternalCalls.cs
- RegexNode.cs
- SqlCharStream.cs
- WCFServiceClientProxyGenerator.cs
- JavaScriptSerializer.cs
- SoapCodeExporter.cs
- WebPartDisplayModeCancelEventArgs.cs
- RectKeyFrameCollection.cs
- CellParagraph.cs
- RepeaterItemEventArgs.cs
- Animatable.cs
- DataObjectFieldAttribute.cs
- DbConnectionFactory.cs
- SiteMapNodeCollection.cs
- Int64Storage.cs
- ApplicationServicesHostFactory.cs
- Base64Decoder.cs
- SqlCacheDependencyDatabase.cs