From c36bfa70d16b44dd8def1933c56e845cf021a71b Mon Sep 17 00:00:00 2001 From: Lefucjusz Date: Thu, 9 Mar 2023 14:38:52 +0100 Subject: [PATCH] [MOS-943] Remove old factory reset mechanism Removed old factory reset mechanism that is no longer needed after UDM. Fixed accessing previously moved variable. Minor cleanups. --- .../service-db/ServiceDBCommon.cpp | 61 +++++++------------ .../include/service-db/ServiceDBCommon.hpp | 9 +-- products/PurePhone/services/db/ServiceDB.cpp | 23 +++---- 3 files changed, 35 insertions(+), 58 deletions(-) diff --git a/module-services/service-db/ServiceDBCommon.cpp b/module-services/service-db/ServiceDBCommon.cpp index 5b74e36704de5fdca9e0bf1d9e37fce42c75c1b4..481a4ba3b8ecae6f2ece6aff3fa645736cdb56e4 100644 --- a/module-services/service-db/ServiceDBCommon.cpp +++ b/module-services/service-db/ServiceDBCommon.cpp @@ -1,4 +1,4 @@ -// Copyright (c) 2017-2022, Mudita Sp. z.o.o. All rights reserved. +// Copyright (c) 2017-2023, Mudita Sp. z.o.o. All rights reserved. // For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md #include @@ -9,9 +9,12 @@ #include #include -static const auto service_db_stack = 1024 * 24; +namespace +{ + constexpr auto serviceDbStackSize = 1024 * 24; +} -ServiceDBCommon::ServiceDBCommon() : sys::Service(service::name::db, "", service_db_stack, sys::ServicePriority::Idle) +ServiceDBCommon::ServiceDBCommon() : sys::Service(service::name::db, "", serviceDbStackSize, sys::ServicePriority::Idle) { LOG_INFO("[ServiceDB] Initializing"); } @@ -25,17 +28,18 @@ db::Interface *ServiceDBCommon::getInterface(db::Interface::Name interface) sys::MessagePointer ServiceDBCommon::DataReceivedHandler(sys::DataMessage *msgl, sys::ResponseMessage *resp) { std::shared_ptr responseMsg; - auto type = static_cast(msgl->messageType); + const auto type = static_cast(msgl->messageType); switch (type) { case MessageType::DBQuery: { - auto msg = dynamic_cast(msgl); + const auto msg = dynamic_cast(msgl); assert(msg); - db::Interface *interface = getInterface(msg->getInterface()); + + const auto interface = getInterface(msg->getInterface()); assert(interface != nullptr); - auto query = msg->getQuery(); - auto queryType = query->type; - auto result = interface->runQuery(std::move(query)); - std::optional id; + + const std::shared_ptr query(std::move(msg->getQuery())); + auto result = interface->runQuery(query); + std::optional id; if (result != nullptr) { id = result->getRecordID(); } @@ -43,7 +47,7 @@ sys::MessagePointer ServiceDBCommon::DataReceivedHandler(sys::DataMessage *msgl, LOG_WARN("There is no response associated with query: %s!", query ? query->debugInfo().c_str() : ""); } responseMsg = std::make_shared(std::move(result)); - sendUpdateNotification(msg->getInterface(), queryType, id); + sendUpdateNotification(msg->getInterface(), query->type, id); } break; default: @@ -68,37 +72,14 @@ sys::ReturnCodes ServiceDBCommon::InitHandler() sys::ReturnCodes ServiceDBCommon::DeinitHandler() { - Database::deinitialize(); - return sys::ReturnCodes::Success; -} - -void ServiceDBCommon::ProcessCloseReason(sys::CloseReason closeReason) -{ - if (closeReason == sys::CloseReason::FactoryReset) { - for (auto &dbAgent : databaseAgents) { - dbAgent->unRegisterMessages(); - } - factoryReset(); + for (auto &dbAgent : databaseAgents) { + dbAgent->unRegisterMessages(); } -} -void ServiceDBCommon::factoryReset() const -{ - constexpr std::array fileExtensions = {".db", ".db-journal", ".db-wal"}; - - LOG_INFO("Performing DB factory reset..."); - const auto userOSPath = purefs::dir::getUserDiskPath(); - for (const auto &f : std::filesystem::directory_iterator(userOSPath)) { - if (const auto it = std::find(fileExtensions.begin(), fileExtensions.end(), f.path().extension()); - it != fileExtensions.end()) { - if (const auto removeStatus = std::filesystem::remove(f.path()); !removeStatus) { - LOG_ERROR("Unable to delete file: %s", f.path().c_str()); - } - else { - LOG_INFO("File deleted: %s", f.path().c_str()); - } - } + if (const auto isSuccess = Database::deinitialize(); !isSuccess) { + return sys::ReturnCodes::Failure; } + return sys::ReturnCodes::Success; } sys::ReturnCodes ServiceDBCommon::SwitchPowerModeHandler(const sys::ServicePowerMode mode) @@ -109,7 +90,7 @@ sys::ReturnCodes ServiceDBCommon::SwitchPowerModeHandler(const sys::ServicePower void ServiceDBCommon::sendUpdateNotification(db::Interface::Name interface, db::Query::Type type, - std::optional recordId) + std::optional recordId) { auto notificationMessage = std::make_shared(interface, type, recordId); bus.sendMulticast(notificationMessage, sys::BusChannel::ServiceDBNotifications); diff --git a/module-services/service-db/include/service-db/ServiceDBCommon.hpp b/module-services/service-db/include/service-db/ServiceDBCommon.hpp index d755ba7286955d5c648d4149071e956661ac6fd1..a8ec69e921211bcbed87b0eb9803dfcf0052669c 100644 --- a/module-services/service-db/include/service-db/ServiceDBCommon.hpp +++ b/module-services/service-db/include/service-db/ServiceDBCommon.hpp @@ -1,4 +1,4 @@ -// Copyright (c) 2017-2022, Mudita Sp. z.o.o. All rights reserved. +// Copyright (c) 2017-2023, Mudita Sp. z.o.o. All rights reserved. // For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md #pragma once @@ -11,9 +11,6 @@ class ServiceDBCommon : public sys::Service { - private: - void factoryReset() const; - protected: virtual db::Interface *getInterface(db::Interface::Name interface); std::set> databaseAgents; @@ -27,9 +24,7 @@ class ServiceDBCommon : public sys::Service sys::ReturnCodes DeinitHandler() override; - void ProcessCloseReason(sys::CloseReason closeReason) override; - - sys::ReturnCodes SwitchPowerModeHandler(const sys::ServicePowerMode mode) final; + sys::ReturnCodes SwitchPowerModeHandler(sys::ServicePowerMode mode) final; void sendUpdateNotification(db::Interface::Name interface, db::Query::Type type, std::optional recordId); }; diff --git a/products/PurePhone/services/db/ServiceDB.cpp b/products/PurePhone/services/db/ServiceDB.cpp index 87649bbe6c0dd08cbbb913822b7324e196929e41..fee95dd3712fbd66816b4f74a310da66d31d23f8 100644 --- a/products/PurePhone/services/db/ServiceDB.cpp +++ b/products/PurePhone/services/db/ServiceDB.cpp @@ -76,6 +76,7 @@ sys::MessagePointer ServiceDB::DataReceivedHandler(sys::DataMessage *msgl, sys:: if (responseMsg) { return responseMsg; } + auto type = static_cast(msgl->messageType); switch (type) { @@ -85,7 +86,7 @@ sys::MessagePointer ServiceDB::DataReceivedHandler(sys::DataMessage *msgl, sys:: case MessageType::DBContactAdd: { auto time = utils::time::Scoped("DBContactAdd"); - DBContactMessage *msg = reinterpret_cast(msgl); + auto msg = static_cast(msgl); auto ret = contactRecordInterface->Add(msg->record); auto record = std::make_unique>(); record->push_back(msg->record); @@ -96,7 +97,7 @@ sys::MessagePointer ServiceDB::DataReceivedHandler(sys::DataMessage *msgl, sys:: case MessageType::DBContactGetByID: { auto time = utils::time::Scoped("DBContactGetByID"); - DBContactMessage *msg = reinterpret_cast(msgl); + auto msg = static_cast(msgl); auto ret = (msg->withTemporary ? contactRecordInterface->GetByIdWithTemporary(msg->record.ID) : contactRecordInterface->GetByID(msg->record.ID)); auto records = std::make_unique>(); @@ -107,7 +108,7 @@ sys::MessagePointer ServiceDB::DataReceivedHandler(sys::DataMessage *msgl, sys:: case MessageType::DBContactGetBySpeedDial: { auto time = utils::time::Scoped("DBContactGetBySpeedDial"); - DBContactMessage *msg = reinterpret_cast(msgl); + auto msg = static_cast(msgl); auto ret = contactRecordInterface->GetBySpeedDial(msg->record.speeddial); responseMsg = std::make_shared(std::move(ret), true, @@ -120,7 +121,7 @@ sys::MessagePointer ServiceDB::DataReceivedHandler(sys::DataMessage *msgl, sys:: case MessageType::DBContactMatchByNumber: { auto time = utils::time::Scoped("DBContactMatchByNumber"); - auto *msg = dynamic_cast(msgl); + auto msg = static_cast(msgl); auto ret = contactRecordInterface->MatchByNumber(msg->numberView); if (ret.has_value()) { @@ -135,7 +136,7 @@ sys::MessagePointer ServiceDB::DataReceivedHandler(sys::DataMessage *msgl, sys:: case MessageType::DBMatchContactNumberBesidesOfContactID: { auto time = utils::time::Scoped("DBMatchContactNumberBesidesOfContactID"); - auto *msg = dynamic_cast(msgl); + auto msg = static_cast(msgl); auto ret = contactRecordInterface->MatchByNumber(msg->numberView, ContactRecordInterface::CreateTempContact::False, utils::PhoneNumber::Match::POSSIBLE, @@ -153,7 +154,7 @@ sys::MessagePointer ServiceDB::DataReceivedHandler(sys::DataMessage *msgl, sys:: case MessageType::DBContactMatchByNumberID: { auto time = utils::time::Scoped("DBContactMatchByNumberID"); - auto *msg = dynamic_cast(msgl); + auto msg = static_cast(msgl); auto ret = contactRecordInterface->GetByNumberID(msg->numberID); if (ret.has_value()) { responseMsg = std::make_shared( @@ -166,7 +167,7 @@ sys::MessagePointer ServiceDB::DataReceivedHandler(sys::DataMessage *msgl, sys:: case MessageType::DBContactRemove: { auto time = utils::time::Scoped("DBContactRemove"); - DBContactMessage *msg = reinterpret_cast(msgl); + auto msg = static_cast(msgl); auto ret = contactRecordInterface->RemoveByID(msg->id); responseMsg = std::make_shared(nullptr, ret); sendUpdateNotification(db::Interface::Name::Contact, db::Query::Type::Delete, msg->id); @@ -174,7 +175,7 @@ sys::MessagePointer ServiceDB::DataReceivedHandler(sys::DataMessage *msgl, sys:: case MessageType::DBContactUpdate: { auto time = utils::time::Scoped("DBContactUpdate"); - DBContactMessage *msg = reinterpret_cast(msgl); + auto msg = static_cast(msgl); auto ret = contactRecordInterface->Update(msg->record); responseMsg = std::make_shared(nullptr, ret); sendUpdateNotification(db::Interface::Name::Contact, db::Query::Type::Update, msg->record.ID); @@ -186,7 +187,7 @@ sys::MessagePointer ServiceDB::DataReceivedHandler(sys::DataMessage *msgl, sys:: case MessageType::DBCalllogAdd: { auto time = utils::time::Scoped("DBCalllogAdd"); - DBCalllogMessage *msg = reinterpret_cast(msgl); + auto msg = static_cast(msgl); auto record = std::make_unique>(); msg->record.ID = DB_ID_NONE; auto ret = calllogRecordInterface->Add(msg->record); @@ -202,7 +203,7 @@ sys::MessagePointer ServiceDB::DataReceivedHandler(sys::DataMessage *msgl, sys:: case MessageType::DBCalllogRemove: { auto time = utils::time::Scoped("DBCalllogRemove"); - DBCalllogMessage *msg = reinterpret_cast(msgl); + auto msg = static_cast(msgl); auto ret = calllogRecordInterface->RemoveByID(msg->id); responseMsg = std::make_shared(nullptr, ret); sendUpdateNotification(db::Interface::Name::Calllog, db::Query::Type::Delete, msg->id); @@ -210,7 +211,7 @@ sys::MessagePointer ServiceDB::DataReceivedHandler(sys::DataMessage *msgl, sys:: case MessageType::DBCalllogUpdate: { auto time = utils::time::Scoped("DBCalllogUpdate"); - DBCalllogMessage *msg = reinterpret_cast(msgl); + auto msg = static_cast(msgl); auto ret = calllogRecordInterface->Update(msg->record); responseMsg = std::make_shared(nullptr, ret); sendUpdateNotification(db::Interface::Name::Calllog, db::Query::Type::Update, msg->record.ID);