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
- Int32KeyFrameCollection.cs
- ServicePointManager.cs
- ResourcePart.cs
- XomlCompilerError.cs
- TemplateControl.cs
- CompilationSection.cs
- PoisonMessageException.cs
- ClientEventManager.cs
- CodePropertyReferenceExpression.cs
- TextRunProperties.cs
- PrintingPermission.cs
- Argument.cs
- StringToken.cs
- BreakRecordTable.cs
- ConnectionPoolManager.cs
- XmlConvert.cs
- IdentityValidationException.cs
- PagesSection.cs
- ToolTipService.cs
- BasicCellRelation.cs
- OutOfMemoryException.cs
- CodeDelegateInvokeExpression.cs
- HttpCacheVaryByContentEncodings.cs
- IResourceProvider.cs
- UnsafeNativeMethods.cs
- TransformerInfoCollection.cs
- _DomainName.cs
- LogExtentCollection.cs
- StylusPointDescription.cs
- IndexOutOfRangeException.cs
- DBParameter.cs
- DateRangeEvent.cs
- EastAsianLunisolarCalendar.cs
- XmlSerializerSection.cs
- ConfigurationStrings.cs
- ResourceSet.cs
- FileUtil.cs
- XmlDomTextWriter.cs
- MetadataResolver.cs
- SectionInformation.cs
- RenderDataDrawingContext.cs
- Mapping.cs
- COSERVERINFO.cs
- DecoderReplacementFallback.cs
- ConsoleCancelEventArgs.cs
- DisplayMemberTemplateSelector.cs
- FilterElement.cs
- TransactionChannelListener.cs
- WindowsAuthenticationModule.cs
- Resources.Designer.cs
- ChannelFactoryBase.cs
- OdbcError.cs
- IndexedGlyphRun.cs
- StreamUpdate.cs
- AlignmentYValidation.cs
- CodeTypeParameter.cs
- DataGridViewRowConverter.cs
- LowerCaseStringConverter.cs
- ParallelActivityDesigner.cs
- DragDeltaEventArgs.cs
- DesignTimeResourceProviderFactoryAttribute.cs
- ConfigurationStrings.cs
- CellIdBoolean.cs
- CompilerGeneratedAttribute.cs
- ExeConfigurationFileMap.cs
- TableDetailsRow.cs
- ProfileServiceManager.cs
- RelatedView.cs
- HttpHandlersSection.cs
- EntityClientCacheEntry.cs
- Crypto.cs
- MailDefinitionBodyFileNameEditor.cs
- _SSPIWrapper.cs
- CheckBoxFlatAdapter.cs
- IndexingContentUnit.cs
- BindingMemberInfo.cs
- HierarchicalDataTemplate.cs
- DeobfuscatingStream.cs
- EntityReference.cs
- DataViewListener.cs
- DocumentPageView.cs
- SqlProviderManifest.cs
- EditingCommands.cs
- CodeDelegateCreateExpression.cs
- Paragraph.cs
- UserPersonalizationStateInfo.cs
- figurelengthconverter.cs
- XmlSchemaAnnotated.cs
- TimersDescriptionAttribute.cs
- XmlHierarchicalEnumerable.cs
- DebugInfoExpression.cs
- CacheAxisQuery.cs
- TryLoadRunnableWorkflowCommand.cs
- EmbossBitmapEffect.cs
- ITreeGenerator.cs
- ListViewCommandEventArgs.cs
- WorkflowRuntimeServiceElement.cs
- DBAsyncResult.cs
- FilterRepeater.cs
- FontStyles.cs