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.

90 lines
2.1 KiB

12 months ago
  1. #include <signal.h>
  2. #include <sqlite3.h>
  3. #include "appbase/dep.hpp"
  4. #include "service/main_control_service.hpp"
  5. using namespace iflytop;
  6. using namespace core;
  7. using namespace std;
  8. namespace iflytop {
  9. using namespace iflytop;
  10. using namespace core;
  11. using namespace std;
  12. class Main {
  13. ENABLE_LOGGER(Main);
  14. private:
  15. unique_ptr<Thread> thread;
  16. private:
  17. int main(int argc, char *argv[]);
  18. public:
  19. static Main *g_main;
  20. static void _onsignal(int signo) { g_main->onsignal(signo); }
  21. void onsignal(int signo);
  22. public:
  23. Main(/* args */) {}
  24. ~Main() {}
  25. void run(int argc, char *argv[]);
  26. void dosystem(string order, bool dump) {
  27. if (dump) logger->info("{}", order);
  28. system(order.c_str());
  29. }
  30. };
  31. }; // namespace iflytop
  32. /*******************************************************************************
  33. * MAIN => MAIN *
  34. *******************************************************************************/
  35. Main *Main::g_main;
  36. extern "C" {
  37. int main(int argc, char *argv[]) {
  38. Main main;
  39. Main::g_main = &main;
  40. main.run(argc, argv);
  41. }
  42. }
  43. void Main::onsignal(int signo) { exit(0); }
  44. void Main::run(int argc, char *argv[]) {
  45. // ::signal(SIGINT, Main::_onsignal);
  46. thread.reset(new Thread("main", [&]() { exit(main(argc, argv)); }));
  47. while (true) sleep(1000);
  48. }
  49. int Main::main(int argc, char *argv[]) {
  50. /**
  51. * @brief
  52. */
  53. logger->info("system setup start.");
  54. spdlog::flush_on(spdlog::level::debug);
  55. logger->info("#");
  56. logger->info("# company:{}", "ifytop");
  57. logger->info("# version:{}", VERSION);
  58. logger->info("# project:{}", PROJECT_NAME);
  59. logger->info("#");
  60. logger->info("build {}.....", "Config");
  61. // 构造GConfig
  62. BUILD_AND_REG_SERRVICE(GConfig);
  63. GET_SERVICE(GConfig)->initialize();
  64. /**
  65. * @brief
  66. */
  67. // if (!device_id.empty()) GET_SERVICE(GConfig)->set_deviceId(device_id);
  68. auto config = GET_SERVICE(GConfig);
  69. // 构造MainControlService
  70. BUILD_AND_REG_SERRVICE(MainControlService);
  71. GET_SERVICE(MainControlService)->initialize();
  72. logger->info("system setup end.");
  73. while (true) sleep(1000);
  74. }