From 55709b7658a7f1bbe0a0a17a4a21ec177d8703e3 Mon Sep 17 00:00:00 2001 From: liweifeng Date: Sat, 10 Jun 2023 18:38:50 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8D=B8=E8=BD=BD=E5=BA=94=E7=94=A8=E6=97=B6?= =?UTF-8?q?=EF=BC=8C=E5=8F=96=E6=B6=88=E6=95=B0=E6=8D=AE=E4=BB=A3=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: liweifeng Change-Id: I4dbde942ea5e6b6ee5cbdef45a6e1b8e162b887a --- services/src/form_data_mgr.cpp | 2 +- services/src/form_data_proxy_mgr.cpp | 5 +++++ services/src/form_data_proxy_record.cpp | 2 ++ services/src/form_event_util.cpp | 3 +++ services/src/form_mgr_adapter.cpp | 9 +++++++-- 5 files changed, 18 insertions(+), 3 deletions(-) diff --git a/services/src/form_data_mgr.cpp b/services/src/form_data_mgr.cpp index 64d63b9945..bd38a7100e 100644 --- a/services/src/form_data_mgr.cpp +++ b/services/src/form_data_mgr.cpp @@ -596,11 +596,11 @@ void FormDataMgr::HandleHostDied(const sptr &remoteHost) std::map::iterator itFormRecord; for (itFormRecord = formRecords_.begin(); itFormRecord != formRecords_.end();) { int64_t formId = itFormRecord->first; + FormDataProxyMgr::GetInstance().UnsubscribeFormData(formId); // if temp form, remove it if (std::find(recordTempForms.begin(), recordTempForms.end(), formId) != recordTempForms.end()) { FormRecord formRecord = itFormRecord->second; itFormRecord = formRecords_.erase(itFormRecord); - FormDataProxyMgr::GetInstance().UnsubscribeFormData(formId); FormProviderMgr::GetInstance().NotifyProviderFormDelete(formId, formRecord); } else { itFormRecord++; diff --git a/services/src/form_data_proxy_mgr.cpp b/services/src/form_data_proxy_mgr.cpp index 8e2270020c..ac8c5043ad 100644 --- a/services/src/form_data_proxy_mgr.cpp +++ b/services/src/form_data_proxy_mgr.cpp @@ -44,6 +44,11 @@ ErrCode FormDataProxyMgr::SubscribeFormData(int64_t formId, const std::vector lock(formDataProxyRecordMutex_); auto search = formDataProxyRecordMap_.find(formId); if (search != formDataProxyRecordMap_.end()) { diff --git a/services/src/form_data_proxy_record.cpp b/services/src/form_data_proxy_record.cpp index 6c6d67d138..b0a41c9655 100644 --- a/services/src/form_data_proxy_record.cpp +++ b/services/src/form_data_proxy_record.cpp @@ -354,12 +354,14 @@ void FormDataProxyRecord::UpdateSubscribeMap(const std::vector &f void FormDataProxyRecord::EnableSubscribeFormData() { + HILOG_DEBUG("enable subscribe form, formId: %{public}s.", std::to_string(formId_).c_str()); SetRdbSubsState(rdbSubscribeMap_, true); SetPublishSubsState(publishSubscribeMap_, true); } void FormDataProxyRecord::DisableSubscribeFormData() { + HILOG_DEBUG("disable subscribe form, formId: %{public}s.", std::to_string(formId_).c_str()); SetRdbSubsState(rdbSubscribeMap_, false); SetPublishSubsState(publishSubscribeMap_, false); } diff --git a/services/src/form_event_util.cpp b/services/src/form_event_util.cpp index d1a26c0a9a..7debe6925d 100644 --- a/services/src/form_event_util.cpp +++ b/services/src/form_event_util.cpp @@ -18,6 +18,7 @@ #include "form_bms_helper.h" #include "form_cache_mgr.h" #include "form_data_mgr.h" +#include "form_data_proxy_mgr.h" #include "form_db_cache.h" #include "form_info_mgr.h" #include "form_render_mgr.h" @@ -79,6 +80,7 @@ void FormEventUtil::HandleProviderUpdated(const std::string &bundleName, const i removedForms.emplace_back(formId); FormDataMgr::GetInstance().DeleteFormRecord(formId); FormRenderMgr::GetInstance().StopRenderingForm(formId, formRecord); + FormDataProxyMgr::GetInstance().UnsubscribeFormData(formId); } if (!removedForms.empty()) { @@ -130,6 +132,7 @@ void FormEventUtil::HandleProviderRemoved(const std::string &bundleName, const i // clean removed form timers for (auto &formId : removedForms) { FormTimerMgr::GetInstance().RemoveFormTimer(formId); + FormDataProxyMgr::GetInstance().UnsubscribeFormData(formId); } } diff --git a/services/src/form_mgr_adapter.cpp b/services/src/form_mgr_adapter.cpp index 9b40b43b63..0f747adfdd 100644 --- a/services/src/form_mgr_adapter.cpp +++ b/services/src/form_mgr_adapter.cpp @@ -1192,7 +1192,7 @@ ErrCode FormMgrAdapter::AddFormTimer(const FormRecord &formRecord) __func__, formRecord.isEnableUpdate, formRecord.formTempFlag); return ERR_OK; } - if (formRecord.updateDuration > 0) { + if (formRecord.updateDuration > 0 && !formRecord.isDataProxy) { bool ret = FormTimerMgr::GetInstance().AddFormTimer(formRecord.formId, formRecord.updateDuration, formRecord.providerUserId); return ret ? ERR_OK : ERR_APPEXECFWK_FORM_COMMON_CODE; @@ -1537,6 +1537,11 @@ int FormMgrAdapter::SetNextRefreshTime(const int64_t formId, const int64_t nextT return ERR_APPEXECFWK_FORM_OPERATION_NOT_SELF; } + if (formRecord.isDataProxy) { + HILOG_ERROR("data proxy form not support set next refresh time."); + return ERR_APPEXECFWK_FORM_COMMON_CODE; + } + return SetNextRefreshTimeLocked(matchedFormId, nextTime, userId); } @@ -1807,7 +1812,7 @@ ErrCode FormMgrAdapter::AddRequestPublishForm(const FormItemInfo &formItemInfo, } std::vector formDataProxies; if (FormDataProxyMgr::GetInstance().ConsumeFormDataProxies(formId, formDataProxies)) { - FormDataProxyMgr::GetInstance().UpdateSubscribeFormData(formId, formDataProxies); + FormDataProxyMgr::GetInstance().SubscribeFormData(formId, formDataProxies); } // start update timer return AddFormTimer(formRecord); -- Gitee