Skip to content

Commit

Permalink
Fixed update Uptime if service is down
Browse files Browse the repository at this point in the history
  • Loading branch information
sea-kg committed Jan 6, 2019
1 parent 1390c90 commit 03b302f
Show file tree
Hide file tree
Showing 5 changed files with 32 additions and 0 deletions.
5 changes: 5 additions & 0 deletions fhq-jury-ad/src/checker/service_checker_thread.cpp
Expand Up @@ -161,24 +161,29 @@ void ServiceCheckerThread::run() {
m_pConfig->storage()->insertFlagPutFail(flag, "corrupt");
Log::warn(TAG, " => service is corrupt ");
m_pConfig->scoreboard()->setServiceStatus(m_teamConf.id(), m_serviceConf.id(), ServiceStatusCell::SERVICE_CORRUPT);
m_pConfig->scoreboard()->updateScore(flag.teamId(), flag.serviceId());
} else if (nExitCode == ServiceCheckerThread::CHECKER_CODE_MUMBLE) {
// >>>>>>>>>>> service is MUMBLE <<<<<<<<<<<<<<
m_pConfig->storage()->insertFlagPutFail(flag, "mumble_1");
Log::warn(TAG, " => service is mumble (1) ");
m_pConfig->scoreboard()->setServiceStatus(m_teamConf.id(), m_serviceConf.id(), ServiceStatusCell::SERVICE_MUMBLE);
m_pConfig->scoreboard()->updateScore(flag.teamId(), flag.serviceId());
} else if (nExitCode == ServiceCheckerThread::CHECKER_CODE_DOWN) {
// >>>>>>>>>>> service is DOWN <<<<<<<<<<<<<<
m_pConfig->storage()->insertFlagPutFail(flag, "down");
Log::warn(TAG, " => service is down ");
m_pConfig->scoreboard()->setServiceStatus(m_teamConf.id(), m_serviceConf.id(), ServiceStatusCell::SERVICE_DOWN);
m_pConfig->scoreboard()->updateScore(flag.teamId(), flag.serviceId());
} else if (nExitCode == ServiceCheckerThread::CHECKER_CODE_SHIT) {
// >>>>>>>>>>> checker is SHIT <<<<<<<<<<<<<<
m_pConfig->storage()->insertFlagPutFail(flag, "shit");
Log::err(TAG, " => checker is shit ");
m_pConfig->scoreboard()->setServiceStatus(m_teamConf.id(), m_serviceConf.id(), ServiceStatusCell::SERVICE_SHIT);
m_pConfig->scoreboard()->updateScore(flag.teamId(), flag.serviceId());
} else {
m_pConfig->storage()->insertFlagPutFail(flag, "internal_error");
Log::err(TAG, " => runChecker - wrong code return");
m_pConfig->scoreboard()->updateScore(flag.teamId(), flag.serviceId());
}
} else {
Log::info(TAG, "Game ended after: " + std::to_string(m_pConfig->gameEndUTCInSec() - nCurrentTime) + " sec");
Expand Down
15 changes: 15 additions & 0 deletions fhq-jury-ad/src/scoreboard/scoreboard.cpp
Expand Up @@ -201,6 +201,21 @@ void Scoreboard::incrementFlagsPutted(const std::string &sTeamId, const std::str

// ----------------------------------------------------------------------

void Scoreboard::updateScore(const std::string &sTeamId, const std::string &sServiceId) {
std::lock_guard<std::mutex> lock(m_mutexJson);
std::map<std::string,TeamStatusRow *>::iterator it;
it = m_mapTeamsStatuses.find(sTeamId);
if (it != m_mapTeamsStatuses.end()) {
TeamStatusRow *pRow = it->second;
pRow->updateScore(sServiceId);
m_jsonScoreboard[sTeamId]["services"][sServiceId]["uptime"] = pRow->serviceUptime(sServiceId);
m_jsonScoreboard[sTeamId]["score"] = pRow->score();
sortPlaces();
}
}

// ----------------------------------------------------------------------

std::string Scoreboard::serviceStatus(const std::string &sTeamId, const std::string &sServiceId) {
std::map<std::string,TeamStatusRow *>::iterator it;
it = m_mapTeamsStatuses.find(sTeamId);
Expand Down
1 change: 1 addition & 0 deletions fhq-jury-ad/src/scoreboard/scoreboard.h
Expand Up @@ -32,6 +32,7 @@ class Scoreboard {
void incrementAttackScore(const std::string &sTeamId, const std::string &sServiceId);
void incrementDefenceScore(const std::string &sTeamId, const std::string &sServiceId);
void incrementFlagsPutted(const std::string &sTeamId, const std::string &sServiceId);
void updateScore(const std::string &sTeamId, const std::string &sServiceId);
std::string serviceStatus(const std::string &sTeamId, const std::string &sServiceId);

void addFlagLive(const Flag &flag);
Expand Down
10 changes: 10 additions & 0 deletions fhq-jury-ad/src/scoreboard/team_status_row.cpp
Expand Up @@ -136,6 +136,16 @@ int TeamStatusRow::incrementFlagsPutted(const std::string &sServiceId) {

// ----------------------------------------------------------------------

void TeamStatusRow::updateScore(const std::string &sServiceId) {
std::lock_guard<std::mutex> lock(m_mutex);
int nFlagsPutted = m_mapServicesStatus[sServiceId]->flagsPutted();
m_mapServicesStatus[sServiceId]->setFlagsPutted(nFlagsPutted);
recalculateScore();
return;
}

// ----------------------------------------------------------------------

void TeamStatusRow::setServiceFlagsPutted(const std::string &sServiceId, int nFlagSuccess) {
std::lock_guard<std::mutex> lock(m_mutex);
m_mapServicesStatus[sServiceId]->setFlagsPutted(nFlagSuccess);
Expand Down
1 change: 1 addition & 0 deletions fhq-jury-ad/src/scoreboard/team_status_row.h
Expand Up @@ -37,6 +37,7 @@ class TeamStatusRow {
int incrementFlagsPutted(const std::string &sServiceId);
void setServiceFlagsPutted(const std::string &sServiceId, int nFlagsPutted);
double serviceUptime(const std::string &sServiceId);
void updateScore(const std::string &sServiceId);

void recalculateScore();

Expand Down

0 comments on commit 03b302f

Please sign in to comment.