You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
149 lines
4.3 KiB
149 lines
4.3 KiB
|
|
#include <signal.h>
|
|
#include <sqlite3.h>
|
|
|
|
#include "appbase/appbase.hpp"
|
|
#include "appconfig/appconfig.hpp"
|
|
#include "service/app_core.hpp"
|
|
//
|
|
#include "appconfig/appconfig.hpp"
|
|
#include "appconfig/basic/zappversion.hpp"
|
|
|
|
using namespace iflytop;
|
|
using namespace core;
|
|
using namespace std;
|
|
|
|
namespace iflytop {
|
|
using namespace iflytop;
|
|
using namespace core;
|
|
using namespace std;
|
|
class Main {
|
|
THISCLASS(Main);
|
|
|
|
private:
|
|
unique_ptr<Thread> thread;
|
|
|
|
private:
|
|
int main(int argc, char *argv[]);
|
|
|
|
public:
|
|
static Main *g_main;
|
|
static void _onsignal(int signo) { g_main->onsignal(signo); }
|
|
void onsignal(int signo);
|
|
|
|
public:
|
|
Main(/* args */) {}
|
|
~Main() {}
|
|
void run(int argc, char *argv[]);
|
|
void dosystem(string order, bool dump) {
|
|
if (dump) logger->info("{}", order);
|
|
system(order.c_str());
|
|
}
|
|
};
|
|
|
|
}; // namespace iflytop
|
|
|
|
/*******************************************************************************
|
|
* MAIN => MAIN *
|
|
*******************************************************************************/
|
|
Main *Main::g_main;
|
|
extern "C" {
|
|
int main(int argc, char *argv[]) {
|
|
Main main;
|
|
Main::g_main = &main;
|
|
main.run(argc, argv);
|
|
}
|
|
}
|
|
namespace iflytop {}
|
|
void Main::onsignal(int signo) { exit(0); }
|
|
void Main::run(int argc, char *argv[]) {
|
|
// ::signal(SIGINT, Main::_onsignal);
|
|
thread.reset(new Thread("main", [&]() { exit(main(argc, argv)); }));
|
|
while (true) sleep(1000);
|
|
}
|
|
|
|
json build_default_logger_cfg() {
|
|
json config;
|
|
|
|
json infologger;
|
|
infologger["name"] = "infologger";
|
|
infologger["type"] = "rotating_file_sink_mt";
|
|
infologger["filename"] = "logs/infolog.log";
|
|
infologger["max_file_size"] = 10485760; // 10MB
|
|
infologger["max_files"] = 30;
|
|
infologger["rotate_on_open"] = false;
|
|
infologger["level"] = 2; // info level
|
|
config.push_back(infologger);
|
|
|
|
json debuglogger;
|
|
debuglogger["name"] = "debuglogger";
|
|
debuglogger["type"] = "rotating_file_sink_mt";
|
|
debuglogger["filename"] = "logs/debuglog.log";
|
|
debuglogger["max_file_size"] = 10485760; // 10MB
|
|
debuglogger["max_files"] = 30;
|
|
debuglogger["rotate_on_open"] = false;
|
|
debuglogger["level"] = 1; // info level
|
|
config.push_back(debuglogger);
|
|
|
|
json terminal;
|
|
terminal["name"] = "terminal";
|
|
terminal["type"] = "stdout_color_sink_mt";
|
|
config.push_back(terminal);
|
|
|
|
json h2o2SensorDataMgr;
|
|
h2o2SensorDataMgr["name"] = "H2O2SensorDataMgr";
|
|
h2o2SensorDataMgr["level"] = 1; // info level
|
|
config.push_back(h2o2SensorDataMgr);
|
|
|
|
json zsCanProtocolCom;
|
|
zsCanProtocolCom["name"] = "ZSCanProtocolCom";
|
|
zsCanProtocolCom["level"] = 1; // info level
|
|
config.push_back(zsCanProtocolCom);
|
|
|
|
json frontMsgProcesser;
|
|
frontMsgProcesser["name"] = "FrontMsgProcesser";
|
|
frontMsgProcesser["level"] = 1; // info level
|
|
config.push_back(frontMsgProcesser);
|
|
|
|
json iflytopFrontEndService;
|
|
iflytopFrontEndService["name"] = "IflytopFrontEndService";
|
|
iflytopFrontEndService["level"] = 1; // info level
|
|
config.push_back(iflytopFrontEndService);
|
|
|
|
json root;
|
|
root["name"] = "root";
|
|
root["type"] = "logger";
|
|
root["level"] = 2; // info level
|
|
root["sinks"] = json::array();
|
|
root["sinks"].push_back("terminal");
|
|
root["sinks"].push_back("infologger");
|
|
root["sinks"].push_back("debuglogger");
|
|
config.push_back(root);
|
|
|
|
return config;
|
|
}
|
|
|
|
int Main::main(int argc, char *argv[]) {
|
|
/**
|
|
* @brief 系统初始化
|
|
*/
|
|
SpdLoggerFactory::Instance().initialize(build_default_logger_cfg());
|
|
|
|
logger->info("system setup start.");
|
|
spdlog::flush_on(spdlog::level::debug);
|
|
logger->info("#");
|
|
logger->info("# company:{}", "ifytop");
|
|
logger->info("# version:{}", VERSION);
|
|
logger->info("# project:{}", PROJECT_NAME);
|
|
logger->info("#");
|
|
logger->info("build {}.....", "Config");
|
|
|
|
logger->info("VolumeConvertor::largeSpaceParam:{}", VolumeConvertor(VolumeConvertor::largeSpaceParam).getFullVolumeG());
|
|
logger->info("VolumeConvertor::smallSpaceParam:{}", VolumeConvertor(VolumeConvertor::smallSpaceParam).getFullVolumeG());
|
|
logger->info("VolumeConvertor::pipeParam:{}", VolumeConvertor(VolumeConvertor::pipeParam).getFullVolumeG());
|
|
|
|
// 构造MainControlService
|
|
BUILD_AND_REG_SERRVICE(AppCore);
|
|
logger->info("system setup end.");
|
|
while (true) sleep(1000);
|
|
}
|