50 lines
1.3 KiB
C++
50 lines
1.3 KiB
C++
|
#include "ClientInfo.h"
|
|||
|
|
|||
|
//添加客户端
|
|||
|
void ClientWrapper::AddClient(ClientInfo* clientInfo) {
|
|||
|
bool isExist = false;
|
|||
|
std::lock_guard<std::mutex> 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<std::mutex> 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<std::mutex> 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<std::mutex> lck(m_mux);
|
|||
|
auto client = m_clientList.begin();
|
|||
|
while (client != m_clientList.end()) {
|
|||
|
(*client)->PushMsg(wd);
|
|||
|
++client;
|
|||
|
}
|
|||
|
}
|