84 lines
2.1 KiB
C++
84 lines
2.1 KiB
C++
|
|
#include "Terminal.h"
|
||
|
|
|
||
|
|
#include "BS_Log.h"
|
||
|
|
#include "CCThread.h"
|
||
|
|
#include "Config.h"
|
||
|
|
|
||
|
|
void Terminal::upStatus() {
|
||
|
|
const auto Setting = Config::getConfig();
|
||
|
|
while (Setting->Flag) {
|
||
|
|
const auto list = getTermList();
|
||
|
|
for (const auto& ID : list) {
|
||
|
|
const auto Term = getData(ID);
|
||
|
|
if (Term) {
|
||
|
|
if (Term->Heartbeat >= 2) {
|
||
|
|
Term->Heartbeat = 0;
|
||
|
|
if (Term->Status == 0) {
|
||
|
|
Term->Status = 1;
|
||
|
|
BS_Log::Log("upStatus TermID: {} is ONLINE", ID);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
else {
|
||
|
|
Term->Heartbeat = 0;
|
||
|
|
if (Term->Status == 1) {
|
||
|
|
Term->Status = 0;
|
||
|
|
BS_Log::Warning("upStatus TermID: {} is OFFLINE", ID);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
CTL::Thread::SleepMS(12 * 1000);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
void Terminal::Init() {
|
||
|
|
CTL::Thread::addTask(upStatus);
|
||
|
|
}
|
||
|
|
|
||
|
|
Terminal * Terminal::getData(const int ID) {
|
||
|
|
const auto it = Term_map.get(ID);
|
||
|
|
if (it && *it) {
|
||
|
|
const auto Term = *it;
|
||
|
|
return Term;
|
||
|
|
}
|
||
|
|
return nullptr;
|
||
|
|
}
|
||
|
|
|
||
|
|
void Terminal::addData(Terminal *data) {
|
||
|
|
Term_map.put(data->ID, data);
|
||
|
|
}
|
||
|
|
|
||
|
|
CCVector<int> Terminal::getTermList() {
|
||
|
|
const auto list = Term_map.values();
|
||
|
|
CCVector<int> TermList;
|
||
|
|
for (const auto &Term : list) {
|
||
|
|
if (Term) {
|
||
|
|
TermList.add_lock(Term->ID);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
return TermList;
|
||
|
|
}
|
||
|
|
|
||
|
|
CCVector<Terminal> Terminal::getTermList_T() {
|
||
|
|
CCVector<Terminal> list_t;
|
||
|
|
const auto List = getTermList();
|
||
|
|
for (const auto &ID : List) {
|
||
|
|
const auto Term = getData(ID);
|
||
|
|
if (Term) {
|
||
|
|
list_t.push_back(*Term);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
return list_t;
|
||
|
|
}
|
||
|
|
|
||
|
|
CTL::String Terminal::toTermInfo() {
|
||
|
|
const auto Setting = Config::getConfig();
|
||
|
|
CTL::JSONObject Json;
|
||
|
|
const auto List = getTermList_T();
|
||
|
|
Json.put("ID",Setting->ID);
|
||
|
|
Json.put("Name", Setting->Name);
|
||
|
|
Json.put("ListLength", List.size());
|
||
|
|
Json.put("TermList", List);
|
||
|
|
return Json.to_String();
|
||
|
|
}
|