104 lines
3.1 KiB
C++
104 lines
3.1 KiB
C++
#include "UpDeviceStatusEngine.h"
|
|
|
|
#undef DISABLE_SSH_AGENT
|
|
namespace
|
|
{
|
|
std::map<std::string, std::string> mapAscii = {
|
|
{"!", "%21"},
|
|
{"#", "%23"},
|
|
{"$", "%24"},
|
|
{"%", "%25"},
|
|
{"&", "%26"},
|
|
{"@", "%40"},
|
|
{"*", "%2A"}
|
|
};
|
|
}
|
|
|
|
UpDeviceStatusEngine::UpDeviceStatusEngine() {}
|
|
|
|
UpDeviceStatusEngine::~UpDeviceStatusEngine() {}
|
|
|
|
APP_ERROR UpDeviceStatusEngine::Init()
|
|
{
|
|
strPort0_ = engineName_ + "_" + std::to_string(engineId_) + "_0";
|
|
this->baseConfig_ = Config::GetIns()->getBaseConfig();
|
|
this->httpServerConfig_ = Config::GetIns()->getHttpServerConfig();
|
|
|
|
LogInfo << "UpDeviceStatusEngine Init ok";
|
|
return APP_ERR_OK;
|
|
}
|
|
|
|
APP_ERROR UpDeviceStatusEngine::DeInit()
|
|
{
|
|
LogInfo << "HttpEngine DeInit ok";
|
|
return APP_ERR_OK;
|
|
}
|
|
|
|
APP_ERROR UpDeviceStatusEngine::Process()
|
|
{
|
|
int iRet = APP_ERR_OK;
|
|
|
|
while (!isStop_)
|
|
{
|
|
std::shared_ptr<void> pVoidData0 = nullptr;
|
|
inputQueMap_[strPort0_]->pop(pVoidData0);
|
|
if (nullptr == pVoidData0)
|
|
{
|
|
usleep(1000); //1ms
|
|
continue;
|
|
}
|
|
|
|
std::shared_ptr<DeviceStatus> pDeviceStatus = std::static_pointer_cast<DeviceStatus>(pVoidData0);
|
|
|
|
if (!this->httpServerConfig_.bIsUse) continue;
|
|
|
|
Json::Value arrayObj; //构建对象
|
|
|
|
arrayObj["tainsModule"] = "2";
|
|
arrayObj["networkStatus"] = pDeviceStatus->strNetworkStatus;
|
|
arrayObj["devName"] = pDeviceStatus->strDeviceName;
|
|
arrayObj["devSn"] = this->baseConfig_.strTrackName;
|
|
arrayObj["cpuData"] = "";
|
|
arrayObj["memoryUsage"] = std::to_string(this->getMemUsagePercent()) + "%";
|
|
arrayObj["devRunningStatus"] = pDeviceStatus->strDeviceRunningStatus;
|
|
arrayObj["devCheckResult"] = pDeviceStatus->strDeviceWarnInfo;
|
|
arrayObj["devIp"] = "";
|
|
arrayObj["devAccount"] = "";
|
|
|
|
Json::Value trainParams;
|
|
trainParams["poundNo"] = this->baseConfig_.strTrackName;
|
|
arrayObj["trainParams"] = trainParams;
|
|
|
|
if (!ToWeb::getins()->upDeviceStatus(arrayObj, 1))
|
|
{
|
|
// LogError << "第" << pTrainInfo->strOrder + "节,识别结果上传失败!";
|
|
}
|
|
}
|
|
return APP_ERR_OK;
|
|
}
|
|
|
|
float UpDeviceStatusEngine::getMemUsagePercent() {
|
|
try{
|
|
std::ifstream mem_info_stream("/proc/meminfo", std::ios_base::in);
|
|
std::string mem_total_key = "MemTotal:";
|
|
std::string mem_free_key = "MemFree:";
|
|
std::string line;
|
|
ulong total = 0, free = 0;
|
|
|
|
while (std::getline(mem_info_stream, line)) {
|
|
if (line.compare(0, mem_total_key.size(), mem_total_key) == 0) {
|
|
total = std::strtoul(line.c_str() + mem_total_key.size(), nullptr, 10);
|
|
} else if (line.compare(0, mem_free_key.size(), mem_free_key) == 0) {
|
|
free = std::strtoul(line.c_str() + mem_free_key.size(), nullptr, 10);
|
|
}
|
|
if (total != 0 && free != 0) {
|
|
break;
|
|
}
|
|
}
|
|
return (total - free) * 100.0 / total;
|
|
}
|
|
catch (...)
|
|
{
|
|
return 0;
|
|
}
|
|
} |