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.

91 lines
2.2 KiB

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