Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / whidbey / NetFXspW7 / 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
![Network programming in C#, Network Programming in VB.NET, Network Programming in .NET](/images/book.jpg)
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- DataComponentNameHandler.cs
- SequenceDesigner.cs
- BaseServiceProvider.cs
- OraclePermissionAttribute.cs
- PropertyNames.cs
- FunctionQuery.cs
- VisualBrush.cs
- BinaryObjectReader.cs
- DataGridViewColumnCollection.cs
- RegistryExceptionHelper.cs
- UpdatePanelControlTrigger.cs
- AuthenticationModuleElement.cs
- SchemaMerger.cs
- RtfToken.cs
- CacheRequest.cs
- DeviceContexts.cs
- ColumnWidthChangingEvent.cs
- BinaryReader.cs
- cache.cs
- ReadWriteSpinLock.cs
- SeekStoryboard.cs
- InnerItemCollectionView.cs
- ContentElement.cs
- GeometryModel3D.cs
- SmiEventSink_DeferedProcessing.cs
- Point4D.cs
- PeerNearMe.cs
- ImageClickEventArgs.cs
- AssociationTypeEmitter.cs
- Rules.cs
- SynchronizedDispatch.cs
- SolidColorBrush.cs
- ConfigurationException.cs
- DataGridColumnCollection.cs
- TableCellCollection.cs
- Publisher.cs
- DispatcherBuilder.cs
- WindowsGraphicsCacheManager.cs
- IIS7WorkerRequest.cs
- XsltOutput.cs
- DecimalSumAggregationOperator.cs
- DialogWindow.cs
- DetailsViewPagerRow.cs
- DataGridColumnCollectionEditor.cs
- COM2IDispatchConverter.cs
- SoapHttpTransportImporter.cs
- ImplicitInputBrush.cs
- NamespaceList.cs
- WebEncodingValidator.cs
- PagerSettings.cs
- mda.cs
- XmlText.cs
- ToolStripDropTargetManager.cs
- ExtractedStateEntry.cs
- Timeline.cs
- View.cs
- SessionStateContainer.cs
- TextSearch.cs
- SimpleType.cs
- IntersectQueryOperator.cs
- _IPv4Address.cs
- RecordConverter.cs
- RichTextBox.cs
- TimeStampChecker.cs
- XhtmlBasicCalendarAdapter.cs
- XmlIlVisitor.cs
- HttpCachePolicyBase.cs
- CrossSiteScriptingValidation.cs
- SplineKeyFrames.cs
- StrokeIntersection.cs
- Rules.cs
- BinaryParser.cs
- XmlMapping.cs
- ClientUIRequest.cs
- _AutoWebProxyScriptHelper.cs
- Input.cs
- RegexCompiler.cs
- TextViewSelectionProcessor.cs
- SinglePageViewer.cs
- MailWriter.cs
- BamlResourceContent.cs
- ExecutionEngineException.cs
- EventEntry.cs
- PathSegment.cs
- InputLanguage.cs
- GrammarBuilder.cs
- XmlSchemaSet.cs
- DataControlCommands.cs
- SQLInt16.cs
- HelpInfo.cs
- GroupBoxRenderer.cs
- SimpleApplicationHost.cs
- XmlObjectSerializerWriteContextComplex.cs
- PermissionSet.cs
- ReadContentAsBinaryHelper.cs
- IISUnsafeMethods.cs
- InkCanvas.cs
- DataContractSerializer.cs
- XmlWellformedWriterHelpers.cs
- _NetworkingPerfCounters.cs