#include "stdafx.h" #include "ManageClientManager.h" #include #include #include bool CManageClientManager::SendRunInfo(CSession& Session, const RunTable& runTable) { if(!runTable.empty()) { CManageClientManager::RunTable::const_iterator pos = runTable.begin(); CManageClientManager::RunTable::const_iterator end = runTable.end(); const int MAX_RUN_INFO = (PktMaxLen - sizeof(ServerManage::ManageCommand)) / sizeof(ServerManage::RunInfo); ServerManage::RunInfo tempRunInfo[MAX_RUN_INFO]; if(!ServerManage::SendManagePacket(Session, ServerManage::CMD::UpdateRunList, 0, 0, 0, 0, 0, ServerManage::SEND_RUNINFO_START, 0, 0)) { ERRLOG1(g_Log, "SS:0x%p/UpdateRunList : SendRunInfoStart packet failed", &Session); return false; } int nRunInfo = 0; for(;pos != end; ++pos) { tempRunInfo[nRunInfo] = pos->second; ++nRunInfo; if(nRunInfo == MAX_RUN_INFO) { if(!ServerManage::SendManagePacket(Session, ServerManage::CMD::UpdateRunList, 0, 0, 0, 0, nRunInfo * sizeof(ServerManage::RunInfo), ServerManage::SEND_RUNINFO_NOW, tempRunInfo, 0)) { ERRLOG1(g_Log, "SS:0x%p/UpdateRunList : SendRunInfoNow packet failed", &Session); return false; } nRunInfo = 0; } } if(0 < nRunInfo) { if(!ServerManage::SendManagePacket(Session, ServerManage::CMD::UpdateRunList, 0, 0, 0, 0, nRunInfo * sizeof(ServerManage::RunInfo), ServerManage::SEND_RUNINFO_NOW, tempRunInfo, 0)) { ERRLOG1(g_Log, "SS:0x%p/UpdateRunList : SendRunInfoNow packet failed", &Session); return false; } } if(!ServerManage::SendManagePacket(Session, ServerManage::CMD::UpdateRunList, 0, 0, 0, 0, 0, ServerManage::SEND_RUNINFO_FINISH, 0, 0)) { ERRLOG1(g_Log, "SS:0x%p/UpdateRunList : SendRunInfoFinish packet failed", &Session); return false; } } return true; }