void ConsoleProfiler::onTimer1000() { ServerSocket* logicServer = GameServer::getInstance()->getLogicServer(); ServerSocket* consoleServer = GameServer::getInstance()->getConsoleServer(); DBQueue* dbQueue = GameServer::getInstance()->getDBQueue(); ByteArray packet; MessageHead head; head.command = CMD_CONSOLE_SUBSCRIBE; head.pack(packet); ConsoleSubscribeMessage msg; msg.memoryPeak = Profiler::getPeakRSS(); msg.memoryUsed = Profiler::getCurrentRSS(); msg.numDBRequests = dbQueue->getQueueLength(); msg.numOnline = logicServer->numOnlines(); #ifdef _WIN32 msg.ioDataPoolSize = logicServer->getIODataPoolSize(); msg.ioDataPostedSize = logicServer->getIODataPostedSize(); #endif msg.pack(packet); head.packSize = packet.getSize(); packet.position = 0; head.pack(packet); auto iter = allSubscribe.begin(); while (iter != allSubscribe.end()) { long long clientID = *iter; auto client = consoleServer->getClient(clientID); if (!client) { iter = allSubscribe.erase(iter); } else { client->send(packet); client->flush(); ++iter; } } }