From 41776695e9de6703965c1a671ae78c0cb137e2f6 Mon Sep 17 00:00:00 2001 From: Zhaohe Date: Sat, 10 Dec 2022 16:23:11 +0800 Subject: [PATCH] update --- .gitmodules | 5 +- .vscode/settings.json | 4 +- CMakeLists.txt | 6 ++- dep/iflytopcpp | 2 +- dep/zclipp | 1 + dep/zwebservice | 2 +- src/main.cpp | 98 +++++++++++++++++++++++++++--------- src/service/device_io_service.cpp | 4 ++ src/service/device_io_service.hpp | 45 +++++++++++++++++ src/service/main_control_service.cpp | 5 ++ src/service/main_control_service.hpp | 45 +++++++++++++++++ src/version.hpp | 2 + 12 files changed, 189 insertions(+), 30 deletions(-) create mode 160000 dep/zclipp create mode 100644 src/service/device_io_service.cpp create mode 100644 src/service/device_io_service.hpp create mode 100644 src/service/main_control_service.cpp create mode 100644 src/service/main_control_service.hpp create mode 100644 src/version.hpp diff --git a/.gitmodules b/.gitmodules index f74bf84..63d719f 100644 --- a/.gitmodules +++ b/.gitmodules @@ -15,4 +15,7 @@ url = http://47.92.195.73/zlinux_demo_projects/websocketpp.git [submodule "dep/asio1.12.2"] path = dep/asio1.12.2 - url = http://47.92.195.73/zlinux_demo_projects/asio1.12.2.git \ No newline at end of file + url = http://47.92.195.73/zlinux_demo_projects/asio1.12.2.git +[submodule "dep/zclipp"] + path = dep/zclipp + url = zwsd@192.168.1.3:zlinux_demo_projects/zclipp.git diff --git a/.vscode/settings.json b/.vscode/settings.json index b7223bb..41fc6ca 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -99,6 +99,8 @@ "__tuple": "cpp", "hash_map": "cpp", "__bit_reference": "cpp", - "*.ipp": "cpp" + "*.ipp": "cpp", + "__functional_03": "cpp", + "__node_handle": "cpp" } } \ No newline at end of file diff --git a/CMakeLists.txt b/CMakeLists.txt index 31bf96e..a3bb33b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -44,9 +44,13 @@ zadd_executable( pthread INCLUDE_DIRECTORIES ${DEP_INCLUDE} + ./src DEFINES ${DEP_DEFINE} SRC ${DEP_SRC} - src/main.cpp) + src/main.cpp + src/service/device_io_service.cpp + src/service/main_control_service.cpp + ) diff --git a/dep/iflytopcpp b/dep/iflytopcpp index f0124f4..2d2ac28 160000 --- a/dep/iflytopcpp +++ b/dep/iflytopcpp @@ -1 +1 @@ -Subproject commit f0124f4fa73a7ee29bddd8275f69cbef1fdedaa9 +Subproject commit 2d2ac28f73d5a14aba4501831c1c52468b726a10 diff --git a/dep/zclipp b/dep/zclipp new file mode 160000 index 0000000..2c32b2f --- /dev/null +++ b/dep/zclipp @@ -0,0 +1 @@ +Subproject commit 2c32b2f1f7cc530b1ec1f62c92f698643bb368db diff --git a/dep/zwebservice b/dep/zwebservice index f4468c3..2062c64 160000 --- a/dep/zwebservice +++ b/dep/zwebservice @@ -1 +1 @@ -Subproject commit f4468c3342826fbe6fb693bfc2eb4b1fba12810c +Subproject commit 2062c64d58a9eed6d22c6b48e6b8b2902f16cc9d diff --git a/src/main.cpp b/src/main.cpp index ae46c51..3fb68a9 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1,29 +1,77 @@ -#include "spdlog/spdlog.h" #include "configs/config.hpp" +#include "iflytopcpp/core/spdlogfactory/logger.hpp" +#include "iflytopcpp/core/thread/thread.hpp" +#include "spdlog/spdlog.h" +#include "version.hpp" +#include "zclipp/include/clipp.h" +#include "zservice_container/zservice_container.hpp" +#include "zwebservice/zwebservice.hpp" +// +#include "service/device_io_service.hpp" +#include "service/main_control_service.hpp" + using namespace iflytop; using namespace core; using namespace std; -int main() -{ - - shared_ptr config; - spdlog::info("Welcome to spdlog!"); - spdlog::error("Some error message with arg: {}", 1); - - spdlog::warn("Easy padding in numbers like {:08d}", 12); - spdlog::critical("Support for int: {0:d}; hex: {0:x}; oct: {0:o}; bin: {0:b}", 42); - spdlog::info("Support for floats {:03.2f}", 1.23456); - spdlog::info("Positional args are {1} {0}..", "too", "supported"); - spdlog::info("{:<30}", "left aligned"); - - spdlog::set_level(spdlog::level::debug); // Set global log level to debug - spdlog::debug("This message should be displayed.."); - - // change log pattern - spdlog::set_pattern("[%H:%M:%S %z] [%n] [%^---%L---%$] [thread %t] %v"); - - // Compile time log levels - // define SPDLOG_ACTIVE_LEVEL to desired level - SPDLOG_TRACE("Some trace message with param {}", 42); - SPDLOG_DEBUG("Some debug message"); -} \ No newline at end of file +using namespace clipp; + +class Main { + ENABLE_LOGGER(Main); + + private: + unique_ptr thread; + + private: + void main(int argc, char *argv[]); + + public: + Main(/* args */) {} + ~Main() {} + void run(int argc, char *argv[]) { + thread.reset(new Thread("main", [&]() { main(argc, argv); })); + while (true) sleep(1000); + } +}; +int main(int argc, char *argv[]) { + Main main; + main.run(argc, argv); +} +#define BUILD_AND_REG_SERRVICE(type, ...) \ + logger->info("build {}.....", #type); \ + shared_ptr type##_val(new type(__VA_ARGS__)); \ + ServiceContrainer::get().regService(type##_val); + +/*********************************************************************************************************************** + * =======================================================Main======================================================== * + ***********************************************************************************************************************/ +void Main::main(int argc, char *argv[]) { + string g_host_server_ip; + string g_device_id; + auto cli = ( // + (required("-device_id") & value("device_id", g_device_id)).doc("device_id") // + ); + if (!parse(argc, argv, cli)) { + cout << make_man_page(cli, argv[0]); + return; + } + + logger->info("#"); + logger->info("# company:{}", "ifytop"); + logger->info("# version:{}", VERSION); + logger->info("#"); + + BUILD_AND_REG_SERRVICE(Config); + GET_SERVICE(Config)->initialize(); + if (!g_device_id.empty()) GET_SERVICE(Config)->set_deviceId(g_device_id); + + BUILD_AND_REG_SERRVICE(DeviceIOService); + GET_SERVICE(DeviceIOService)->initialize(); + + BUILD_AND_REG_SERRVICE(ZWebService); + GET_SERVICE(ZWebService)->initialize(); + + BUILD_AND_REG_SERRVICE(MainControlService); + GET_SERVICE(MainControlService)->initialize(); + + logger->info("system setup end."); +} diff --git a/src/service/device_io_service.cpp b/src/service/device_io_service.cpp new file mode 100644 index 0000000..0156eae --- /dev/null +++ b/src/service/device_io_service.cpp @@ -0,0 +1,4 @@ +#include "device_io_service.hpp" +using namespace iflytop; +using namespace core; +using namespace std; diff --git a/src/service/device_io_service.hpp b/src/service/device_io_service.hpp new file mode 100644 index 0000000..5361c17 --- /dev/null +++ b/src/service/device_io_service.hpp @@ -0,0 +1,45 @@ +// +// Created by zwsd +// + +#pragma once +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "configs/config.hpp" +#include "iflytopcpp/core/spdlogfactory/logger.hpp" +// +#include "configs/config.hpp" +#include "zservice_container/zservice_container.hpp" + +/** + * @brief + * + * service: DeviceIOService + * + * 监听事件: + * 依赖状态: + * 依赖服务: + * 作用: + * + */ + +namespace iflytop { +using namespace std; +using namespace core; +class DeviceIOService : public enable_shared_from_this { + ENABLE_LOGGER(DeviceIOService); + + public: + DeviceIOService(){}; + + void initialize(){}; +}; +} // namespace iflytop \ No newline at end of file diff --git a/src/service/main_control_service.cpp b/src/service/main_control_service.cpp new file mode 100644 index 0000000..b59c11b --- /dev/null +++ b/src/service/main_control_service.cpp @@ -0,0 +1,5 @@ +#include "main_control_service.hpp" + +using namespace iflytop; +using namespace core; +using namespace std; \ No newline at end of file diff --git a/src/service/main_control_service.hpp b/src/service/main_control_service.hpp new file mode 100644 index 0000000..f665c74 --- /dev/null +++ b/src/service/main_control_service.hpp @@ -0,0 +1,45 @@ +// +// Created by zwsd +// + +#pragma once +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "configs/config.hpp" +#include "iflytopcpp/core/spdlogfactory/logger.hpp" +// +#include "configs/config.hpp" +#include "zservice_container/zservice_container.hpp" + +/** + * @brief + * + * service: MainControlService + * + * 监听事件: + * 依赖状态: + * 依赖服务: + * 作用: + * + */ + +namespace iflytop { +using namespace std; +using namespace core; +class MainControlService : public enable_shared_from_this { + ENABLE_LOGGER(MainControlService); + + public: + MainControlService(){}; + + void initialize(){}; +}; +} // namespace iflytop \ No newline at end of file diff --git a/src/version.hpp b/src/version.hpp new file mode 100644 index 0000000..025956d --- /dev/null +++ b/src/version.hpp @@ -0,0 +1,2 @@ +#pragma once +#define VERSION "0.1" \ No newline at end of file