GrpcPrint/PrintS/DataManage/ClientInfo.cpp
2024-04-10 16:15:33 +08:00

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;
}
}