void DESC_MANAGER::DestroyClosed() { DESC_SET::iterator i = m_set_pkDesc.begin(); while (i != m_set_pkDesc.end()) { LPDESC d = *i; DESC_SET::iterator ci = i; ++i; if (d->IsPhase(PHASE_CLOSE)) { if (d->GetType() == DESC_TYPE_CONNECTOR) { LPCLIENT_DESC client_desc = (LPCLIENT_DESC)d; if (client_desc->IsRetryWhenClosed()) { client_desc->Reset(); continue; } } DestroyDesc(d, false); m_set_pkDesc.erase(ci); } } }
void DESC_MANAGER::Destroy() { if (m_bDestroyed) { return; } m_bDestroyed = true; DESC_SET::iterator i = m_set_pkDesc.begin(); while (i != m_set_pkDesc.end()) { LPDESC d = *i; DESC_SET::iterator ci = i; ++i; if (d->GetType() == DESC_TYPE_CONNECTOR) continue; if (d->IsPhase(PHASE_P2P)) continue; DestroyDesc(d, false); m_set_pkDesc.erase(ci); } i = m_set_pkDesc.begin(); while (i != m_set_pkDesc.end()) { LPDESC d = *i; DESC_SET::iterator ci = i; ++i; DestroyDesc(d, false); m_set_pkDesc.erase(ci); } m_set_pkClientDesc.clear(); //m_AccountIDMap.clear(); m_map_loginName.clear(); m_map_handle.clear(); Initialize(); }