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
- FullTextLine.cs
- LinkDesigner.cs
- SequenceDesignerAccessibleObject.cs
- Int64.cs
- NamedElement.cs
- FunctionQuery.cs
- DataGridViewElement.cs
- ZipIOModeEnforcingStream.cs
- FaultDescriptionCollection.cs
- OrderedDictionary.cs
- ThemeDictionaryExtension.cs
- CustomExpressionEventArgs.cs
- MailDefinitionBodyFileNameEditor.cs
- SqlCacheDependencyDatabase.cs
- ExpressionEditorAttribute.cs
- Encoding.cs
- CompModSwitches.cs
- WindowsGraphics2.cs
- QilReplaceVisitor.cs
- RootNamespaceAttribute.cs
- DataSourceBooleanViewSchemaConverter.cs
- BinaryFormatterWriter.cs
- DesignOnlyAttribute.cs
- WindowsTreeView.cs
- PackagePartCollection.cs
- DataBindEngine.cs
- SmiEventSink_DeferedProcessing.cs
- Int64KeyFrameCollection.cs
- HostingEnvironmentSection.cs
- TextEndOfParagraph.cs
- XmlNamespaceMapping.cs
- TableCellCollection.cs
- HandlerBase.cs
- SecureConversationVersion.cs
- EditingCoordinator.cs
- XmlEnumAttribute.cs
- SqlBinder.cs
- ErrorRuntimeConfig.cs
- TraversalRequest.cs
- XmlNodeChangedEventArgs.cs
- Int32Converter.cs
- LongValidatorAttribute.cs
- BufferBuilder.cs
- WebBrowser.cs
- SmtpAuthenticationManager.cs
- BinaryMessageFormatter.cs
- HtmlTableRow.cs
- PngBitmapEncoder.cs
- ToolStripPanelRenderEventArgs.cs
- ContentControl.cs
- DecoderNLS.cs
- NestPullup.cs
- ExecutionEngineException.cs
- XmlSchemaSet.cs
- Transform3DCollection.cs
- UndirectedGraph.cs
- PersonalizationProvider.cs
- RemotingConfigParser.cs
- HttpCacheVaryByContentEncodings.cs
- ProviderIncompatibleException.cs
- SingleAnimationBase.cs
- XmlnsPrefixAttribute.cs
- DetailsViewDeletedEventArgs.cs
- Comparer.cs
- IssuanceTokenProviderBase.cs
- XmlNamespaceDeclarationsAttribute.cs
- WmfPlaceableFileHeader.cs
- Guid.cs
- CqlParserHelpers.cs
- HuffmanTree.cs
- SchemaEntity.cs
- LineServicesRun.cs
- ColorTypeConverter.cs
- AlignmentXValidation.cs
- PrintPageEvent.cs
- PagedDataSource.cs
- _SingleItemRequestCache.cs
- ChangeInterceptorAttribute.cs
- QueryCacheManager.cs
- XmlDataImplementation.cs
- PostBackOptions.cs
- HttpVersion.cs
- Geometry.cs
- DataBoundControlHelper.cs
- AssemblyCollection.cs
- DesignTimeVisibleAttribute.cs
- IpcPort.cs
- SqlBuilder.cs
- ScrollViewer.cs
- NamespaceDisplay.xaml.cs
- ContextProperty.cs
- SortFieldComparer.cs
- TableCell.cs
- DbProviderFactories.cs
- Win32KeyboardDevice.cs
- Stack.cs
- EntityConnectionStringBuilderItem.cs
- Message.cs
- IndentedTextWriter.cs
- log.cs