From 056f71f24cefaf88f2a93714c6678c03ed5f1e0e Mon Sep 17 00:00:00 2001
From: zhangmeng <775834166@qq.com>
Date: 星期五, 02 七月 2021 16:54:33 +0800
Subject: [PATCH] fixed to adapt gcc-5.4 & glibc-2.25
---
box/center_main.cc | 40 ++++++++++++++++++++++++++++++++++++++--
1 files changed, 38 insertions(+), 2 deletions(-)
diff --git a/box/center_main.cc b/box/center_main.cc
index 40aed56..8c840dc 100644
--- a/box/center_main.cc
+++ b/box/center_main.cc
@@ -15,17 +15,53 @@
*
* =====================================================================================
*/
+#include "app_arg.h"
#include "box.h"
#include "center.h"
#include "defs.h"
+#include "log.h"
#include "signalhandle.h"
+#include <boost/interprocess/sync/named_mutex.hpp>
+#include <chrono>
+#include <thread>
+using namespace std::chrono_literals;
+using namespace bhome_shm;
int center_main(int argc, const char *argv[])
{
- BHCenter center(BHomeShm());
+ AppArg args(argc, argv);
+
+ ns_log::AddLog(BHLogDir() + "bhshmq_center.log");
+ auto lvl = args.Get("log", "info");
+ if (strcasecmp(lvl.c_str(), "trace") == 0) { ns_log::ResetLogLevel(ns_log::LogLevel::trace); }
+ if (strcasecmp(lvl.c_str(), "debug") == 0) { ns_log::ResetLogLevel(ns_log::LogLevel::debug); }
+ if (strcasecmp(lvl.c_str(), "info") == 0) { ns_log::ResetLogLevel(ns_log::LogLevel::info); }
+ if (strcasecmp(lvl.c_str(), "warning") == 0) { ns_log::ResetLogLevel(ns_log::LogLevel::warning); }
+ if (strcasecmp(lvl.c_str(), "error") == 0) { ns_log::ResetLogLevel(ns_log::LogLevel::error); }
+ if (strcasecmp(lvl.c_str(), "fatal") == 0) { ns_log::ResetLogLevel(ns_log::LogLevel::fatal); }
+
+ if (!CenterInit()) {
+ auto msg = "init memory failed, or center is already running.";
+ LOG_FATAL() << msg;
+ printf("%s\n", msg);
+ exit(0);
+ }
+ auto &shm = BHomeShm();
+ GlobalInit(shm);
+
+ if (args.Has("daemon") || args.Has("d")) {
+ int r = daemon(0, 0); // maybe add center control msg to close itself.
+ }
+
+ BHCenter center(shm);
center.Start();
+
+ auto msg = "center (" + shm.name() + ") started ...";
+ LOG_INFO() << msg;
+ printf("%s\n", msg.c_str());
WaitForSignals({SIGINT, SIGTERM});
- // BHomeShm().Remove(); // remove ?
+ center.Stop();
+ LOG_INFO() << "center stopped.";
return 0;
}
--
Gitblit v1.8.0