2024-04-10 16:15:33 +08:00
|
|
|
|
#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;
|
|
|
|
|
}
|
2024-04-12 15:51:41 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bool ClientWrapper::IsExist(ClientInfo* ci) {
|
|
|
|
|
std::lock_guard<std::mutex> lck(m_mux);
|
|
|
|
|
bool flag = false;
|
|
|
|
|
auto client = m_clientList.begin();
|
|
|
|
|
while (client != m_clientList.end()) {
|
|
|
|
|
if (*client == ci){
|
|
|
|
|
flag = true; break;
|
|
|
|
|
}
|
|
|
|
|
++client;
|
|
|
|
|
}
|
|
|
|
|
return flag;
|
2024-04-10 16:15:33 +08:00
|
|
|
|
}
|