From 87725ad20a75dc8af11121febb8dee7c13a06319 Mon Sep 17 00:00:00 2001 From: Vladislav Ostapov Date: Fri, 15 Nov 2024 10:13:21 +0300 Subject: [PATCH] =?UTF-8?q?=D1=84=D0=B8=D0=BA=D1=81=20=D0=BE=D1=88=D0=B8?= =?UTF-8?q?=D0=B1=D0=BE=D0=BA:=20=D0=BF=D1=83=D1=81=D1=82=D0=B0=D1=8F=20?= =?UTF-8?q?=D1=81=D1=82=D1=80=D0=BE=D0=BA=D0=B0=20qos.class.filters.proto?= =?UTF-8?q?=20=D0=B2=20=D0=B7=D0=B0=D0=BF=D1=80=D0=BE=D1=81=D0=B5,=20?= =?UTF-8?q?=D0=BD=D0=B5=20=D0=BF=D1=80=D0=B8=D0=BC=D0=B5=D0=BD=D1=8F=D1=8E?= =?UTF-8?q?=D1=89=D0=B8=D0=B5=D1=81=D1=8F=20=D0=BD=D0=B0=D1=81=D1=82=D1=80?= =?UTF-8?q?=D0=BE=D0=B9=D0=BA=D0=B8=20=D1=81=D0=B5=D1=82=D0=B8,=20=D0=BD?= =?UTF-8?q?=D0=B5=D1=82=20=D1=88=D0=B0=D0=B3=D0=B0=20=D1=83=20"ACM*"=20?= =?UTF-8?q?=D0=B8=20"*=D0=BE=D1=81=D0=BB=D0=B0=D0=B1=D0=BB=D0=B5=D0=BD?= =?UTF-8?q?=D0=B8=D0=B5"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main.cpp | 8 ++++++-- src/terminal_api_driver.cpp | 17 +++++++++++++---- src/terminal_api_driver.h | 2 ++ 3 files changed, 21 insertions(+), 6 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index 4eda40c..16acb4a 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -95,8 +95,12 @@ class ServerResources { } } - static void doTerminalUpgrade() { - system(UPGRADE_COMMAND); + void doTerminalUpgrade() const { + api->executeInApi([](TSID sid) { + CP_SetDmaDebug(sid, "begin_save_config", ""); + system(UPGRADE_COMMAND); + CP_SetDmaDebug(sid, "save_config", ""); + }); } public: diff --git a/src/terminal_api_driver.cpp b/src/terminal_api_driver.cpp index 63a3185..367a57d 100644 --- a/src/terminal_api_driver.cpp +++ b/src/terminal_api_driver.cpp @@ -100,8 +100,6 @@ public: */ class api_driver::TerminalApiDaemon { private: - TSID sid; - boost::thread daemon; void updateFirmwareSettings() { std::string version, chip_id, sn, mac0, mac1; @@ -286,8 +284,6 @@ private: } } - std::mutex cpApiMutex; - std::shared_mutex firmwareMutex; TerminalFirmwareVersion firmware; @@ -311,6 +307,10 @@ private: std::string qosClassesJson; public: + std::mutex cpApiMutex; + TSID sid; + boost::thread daemon; + explicit TerminalApiDaemon(TSID sid): sid(sid), daemon([this]() { this->run(); }), qosEnabled(false) { this->qosClassesJson = DEFAULT_QOS_CLASSES; } @@ -892,6 +892,15 @@ void api_driver::ApiDriver::resetDefaultSettings() { daemon->resetDefaultSettings(); } +void api_driver::ApiDriver::executeInApi(const std::function& callback) { + try { + std::lock_guard lock(this->daemon->cpApiMutex); + callback(this->daemon->sid); + } catch (std::exception& e) { + BOOST_LOG_TRIVIAL(error) << "ApiDriver::executeInApi(): failed to exec with error: " << e.what(); + } +} + bool api_driver::ApiDriver::getIsCinC() const { modulator_settings s{}; daemon->getSettings(&s, nullptr, nullptr, nullptr, nullptr); diff --git a/src/terminal_api_driver.h b/src/terminal_api_driver.h index 60db10a..15d4706 100644 --- a/src/terminal_api_driver.h +++ b/src/terminal_api_driver.h @@ -67,6 +67,8 @@ namespace api_driver { void resetDefaultSettings(); + void executeInApi(const std::function& callback); + ~ApiDriver(); private: