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

1 year ago
12 months ago
1 year ago
12 months ago
1 year ago
12 months ago
1 year 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. THISCLASS(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. namespace iflytop {
  44. }
  45. void Main::onsignal(int signo) { exit(0); }
  46. void Main::run(int argc, char *argv[]) {
  47. // ::signal(SIGINT, Main::_onsignal);
  48. thread.reset(new Thread("main", [&]() { exit(main(argc, argv)); }));
  49. while (true) sleep(1000);
  50. }
  51. int Main::main(int argc, char *argv[]) {
  52. /**
  53. * @brief
  54. */
  55. logger->info("system setup start.");
  56. spdlog::flush_on(spdlog::level::debug);
  57. logger->info("#");
  58. logger->info("# company:{}", "ifytop");
  59. logger->info("# version:{}", VERSION);
  60. logger->info("# project:{}", PROJECT_NAME);
  61. logger->info("#");
  62. logger->info("build {}.....", "Config");
  63. // 构造GConfig
  64. BUILD_AND_REG_SERRVICE(GConfig);
  65. GET_SERVICE(GConfig)->initialize();
  66. /**
  67. * @brief
  68. */
  69. // if (!device_id.empty()) GET_SERVICE(GConfig)->set_deviceId(device_id);
  70. auto config = GET_SERVICE(GConfig);
  71. // 构造MainControlService
  72. BUILD_AND_REG_SERRVICE(MainControlService);
  73. GET_SERVICE(MainControlService)->initialize();
  74. logger->info("system setup end.");
  75. while (true) sleep(1000);
  76. }