private ConnectionGroup FindConnectionGroup(string connName, bool dontCreate) { string str = ConnectionGroup.MakeQueryStr(connName); ConnectionGroup group = this.m_ConnectionGroupList[str] as ConnectionGroup; if ((group == null) && !dontCreate) { group = new ConnectionGroup(this, connName); this.m_ConnectionGroupList[str] = group; } return(group); }
// methods /*++ * * FindConnectionGroup - * * Searches for the a Group object that actually holds the connections * that we want to peak at. * * * Input: * request - Request that's being submitted. * connName - Connection Name if needed * * Returns: * ConnectionGroup * * --*/ internal ConnectionGroup FindConnectionGroup(string connName) { string lookupStr = ConnectionGroup.MakeQueryStr(connName); GlobalLog.Print("ServicePoint#" + ValidationHelper.HashString(this) + "::FindConnectionGroup() lookupStr:[" + ValidationHelper.ToString(connName) + "]"); ConnectionGroup entry = m_ConnectionGroupList[lookupStr] as ConnectionGroup; if (entry == null) { IPAddressInfo RemoteInfo = GetCurrentIPAddressInfo(); IPAddress RemoteAddress = null; int ConnLimit; if (RemoteInfo == null) { GlobalLog.Print("ServicePoint#" + ValidationHelper.HashString(this) + "::FindConnectionGroup() RemoteAddress:[(null)] m_UserChangedLimit:" + m_UserChangedLimit.ToString() + " m_ConnectionLimit:" + m_ConnectionLimit.ToString()); // // If we don't have any information about the remote IP address, // limit ourself to one connection until the address is resolved. // ConnLimit = 1; // ServicePointManager.DefaultConnectionLimit; // // if this is a user given number, then // make sure to propagte this value // if (m_UserChangedLimit) { ConnLimit = m_ConnectionLimit; } } else { RemoteAddress = RemoteInfo.Address; if (!RemoteInfo.IsLoopback) { ConnLimit = m_ConnectionLimit; } else { ConnLimit = LoopbackConnectionLimit; } GlobalLog.Print("ServicePoint#" + ValidationHelper.HashString(this) + "::FindConnectionGroup() RemoteAddress:[" + RemoteAddress.ToString() + "] ConnLimit:" + ConnLimit.ToString() + " m_ConnectionLimit:" + m_ConnectionLimit.ToString()); } GlobalLog.Print("ServicePoint#" + ValidationHelper.HashString(this) + "::FindConnectionGroup() creating ConnectionGroup ConnLimit:" + ConnLimit.ToString()); entry = new ConnectionGroup(this, RemoteAddress, ConnLimit, connName); GlobalLog.Print("ServicePoint#" + ValidationHelper.HashString(this) + "::FindConnectionGroup() adding ConnectionGroup lookupStr:[" + lookupStr + "]"); m_ConnectionGroupList[lookupStr] = entry; } else { GlobalLog.Print("ServicePoint#" + ValidationHelper.HashString(this) + "::FindConnectionGroup() using existing ConnectionGroup"); } GlobalLog.Print("ServicePoint#" + ValidationHelper.HashString(this) + "::FindConnectionGroup() ConnectionGroup.ConnLimit:" + entry.ConnectionLimit.ToString()); return(entry); }