#include "ClientInfo.h" //添加客户端 void ClientWrapper::AddClient(ClientInfo* clientInfo) { bool isExist = false; std::lock_guard lck(m_mux); for (auto client = m_clientList.begin(); client != m_clientList.end(); ++client) { if (clientInfo == *client) { isExist = true; break; } } if (!isExist) m_clientList.emplace_back(clientInfo); } //下线检测 void ClientWrapper::OfflineCheck() { std::lock_guard lck(m_mux); auto client = m_clientList.begin(); while (client != m_clientList.end()) { if (!(*client)->IsConnect()) { printf("%s 下线了...\n", (*client)->m_clientAddr.c_str()); delete (*client); client = m_clientList.erase(client); } else { ++client; } } } void ClientWrapper::Clear() { std::lock_guard lck(m_mux); auto client = m_clientList.begin(); while (client != m_clientList.end()) { if (*client) delete (*client); ++client; } m_clientList.clear(); } void ClientWrapper::PushAllClient(WriteData* wd) { std::lock_guard lck(m_mux); auto client = m_clientList.begin(); while (client != m_clientList.end()) { (*client)->PushMsg(wd); ++client; } }