From 6b5e585dd3ad4b0cdb39bf7ed7e5b76ce82d6a51 Mon Sep 17 00:00:00 2001 From: xiekaiming Date: Fri, 13 Oct 2023 17:29:40 +0800 Subject: [PATCH 1/7] =?UTF-8?q?=E9=9A=8FX=E6=8E=A5=E5=8F=A3=E5=8F=98?= =?UTF-8?q?=E6=9B=B4=E4=B8=BA=E5=90=8C=E6=AD=A5=E6=8E=A5=E5=8F=A3=EF=BC=8C?= =?UTF-8?q?=E6=97=A7=E6=8E=A5=E5=8F=A3=E6=96=B0=E5=A2=9E=E5=90=8C=E6=AD=A5?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: xiekaiming --- .../kits/js/include/config_policy_napi.h | 20 +- interfaces/kits/js/src/config_policy_napi.cpp | 184 ++++++++++++------ 2 files changed, 138 insertions(+), 66 deletions(-) diff --git a/interfaces/kits/js/include/config_policy_napi.h b/interfaces/kits/js/include/config_policy_napi.h index 38248ff..73bb17b 100644 --- a/interfaces/kits/js/include/config_policy_napi.h +++ b/interfaces/kits/js/include/config_policy_napi.h @@ -46,27 +46,35 @@ public: static napi_value Init(napi_env env, napi_value exports); private: + typedef napi_value (*NapiFunction)(napi_env env, std::shared_ptr context); + static napi_value NAPIGetOneCfgFile(napi_env env, napi_callback_info info); static napi_value NAPIGetCfgFiles(napi_env env, napi_callback_info info); - static napi_value NAPIGetOneCfgFileEx(napi_env env, napi_callback_info info); - static napi_value NAPIGetCfgFilesEx(napi_env env, napi_callback_info info); + static napi_value NAPIGetOneCfgFileSync(napi_env env, napi_callback_info info); + static napi_value NAPIGetCfgFilesSync(napi_env env, napi_callback_info info); + static napi_value NAPIGetOneCfgFileExSync(napi_env env, napi_callback_info info); + static napi_value NAPIGetCfgFilesExSync(napi_env env, napi_callback_info info); static napi_value NAPIGetCfgDirList(napi_env env, napi_callback_info info); + static napi_value NAPIGetCfgDirListSync(napi_env env, napi_callback_info info); static napi_value CreateUndefined(napi_env env); static std::string GetStringFromNAPI(napi_env env, napi_value value); static napi_value HandleAsyncWork(napi_env env, ConfigAsyncContext *context, std::string workName, napi_async_execute_callback execute, napi_async_complete_callback complete); - static napi_value GetOneCfgFileOrAllCfgFilesEx(napi_env env, napi_callback_info info, - const std::string &workName, napi_async_execute_callback execute); + static napi_value GetOneCfgFileOrAllCfgFilesEx(napi_env env, napi_callback_info info, NapiFunction func); static bool MatchValueType(napi_env env, napi_value value, napi_valuetype targetType); static void NativeGetOneCfgFile(napi_env env, void *data); static void NativeGetCfgFiles(napi_env env, void *data); - static void NativeGetOneCfgFileEx(napi_env env, void *data); - static void NativeGetCfgFilesEx(napi_env env, void *data); static void NativeGetCfgDirList(napi_env env, void *data); + static napi_value NativeGetOneCfgFileSync(napi_env env, std::shared_ptr context); + static napi_value NativeGetCfgFilesSync(napi_env env, std::shared_ptr context); + static napi_value NativeGetCfgDirListSync(napi_env env, std::shared_ptr context); + static napi_value NativeGetOneCfgFileExSync(napi_env env, std::shared_ptr context); + static napi_value NativeGetCfgFilesExSync(napi_env env, std::shared_ptr context); static void NativeCallbackComplete(napi_env env, napi_status status, void *data); static napi_value ParseRelPath(napi_env env, std::string ¶m, napi_value args); static napi_value ParseFollowMode(napi_env env, int32_t ¶m, napi_value args); static napi_value ParseExtra(napi_env env, std::string ¶m, napi_value args); + static napi_value CreateArraysValue(napi_env env, std::shared_ptr context); static void CreateArraysValueFunc(ConfigAsyncContext &context); static void CreateFollowXModeObject(napi_env env, napi_value value); static napi_value ThrowNapiError(napi_env env, int32_t errCode, const std::string &errMessage); diff --git a/interfaces/kits/js/src/config_policy_napi.cpp b/interfaces/kits/js/src/config_policy_napi.cpp index 7968a04..9aaf346 100644 --- a/interfaces/kits/js/src/config_policy_napi.cpp +++ b/interfaces/kits/js/src/config_policy_napi.cpp @@ -29,11 +29,9 @@ using namespace OHOS::HiviewDFX; static constexpr size_t ARGS_SIZE_ONE = 1; static constexpr size_t ARGS_SIZE_TWO = 2; static constexpr size_t ARGS_SIZE_THREE = 3; -static constexpr size_t ARGS_SIZE_FOUR = 4; static constexpr int32_t ARR_INDEX_ZERO = 0; static constexpr int32_t ARR_INDEX_ONE = 1; static constexpr int32_t ARR_INDEX_TWO = 2; -static constexpr int32_t ARR_INDEX_THREE = 3; static constexpr int32_t NAPI_RETURN_ZERO = 0; static constexpr int32_t NAPI_RETURN_ONE = 1; // Param Error Code @@ -48,10 +46,13 @@ napi_value ConfigPolicyNapi::Init(napi_env env, napi_value exports) napi_property_descriptor property[] = { DECLARE_NAPI_FUNCTION("getOneCfgFile", ConfigPolicyNapi::NAPIGetOneCfgFile), + DECLARE_NAPI_FUNCTION("getOneCfgFileSync", ConfigPolicyNapi::NAPIGetOneCfgFileSync), + DECLARE_NAPI_FUNCTION("getOneCfgFileExSync", ConfigPolicyNapi::NAPIGetOneCfgFileExSync), DECLARE_NAPI_FUNCTION("getCfgFiles", ConfigPolicyNapi::NAPIGetCfgFiles), - DECLARE_NAPI_FUNCTION("getOneCfgFileEx", ConfigPolicyNapi::NAPIGetOneCfgFileEx), - DECLARE_NAPI_FUNCTION("getCfgFilesEx", ConfigPolicyNapi::NAPIGetCfgFilesEx), + DECLARE_NAPI_FUNCTION("getCfgFilesSync", ConfigPolicyNapi::NAPIGetCfgFilesSync), + DECLARE_NAPI_FUNCTION("getCfgFilesExSync", ConfigPolicyNapi::NAPIGetCfgFilesExSync), DECLARE_NAPI_FUNCTION("getCfgDirList", ConfigPolicyNapi::NAPIGetCfgDirList), + DECLARE_NAPI_FUNCTION("getCfgDirListSync", ConfigPolicyNapi::NAPIGetCfgDirListSync), DECLARE_NAPI_PROPERTY("FollowXMode", nFollowXMode) }; @@ -110,11 +111,27 @@ napi_value ConfigPolicyNapi::NAPIGetOneCfgFile(napi_env env, napi_callback_info NativeCallbackComplete); } -napi_value ConfigPolicyNapi::GetOneCfgFileOrAllCfgFilesEx(napi_env env, napi_callback_info info, - const std::string &workName, napi_async_execute_callback execute) +napi_value ConfigPolicyNapi::NAPIGetOneCfgFileSync(napi_env env, napi_callback_info info) { - size_t argc = ARGS_SIZE_FOUR; - napi_value argv[ARGS_SIZE_FOUR] = {nullptr}; + size_t argc = ARGS_SIZE_ONE; + napi_value argv[ARGS_SIZE_ONE] = {nullptr}; + napi_value thisVar = nullptr; + void *data = nullptr; + napi_get_cb_info(env, info, &argc, argv, &thisVar, &data); + if (argc < ARGS_SIZE_ONE) { + return ThrowNapiError(env, PARAM_ERROR, "Parameter error. The number of parameters is incorrect."); + } + auto asyncContext = std::make_shared(); + if (ParseRelPath(env, asyncContext->relPath_, argv[ARR_INDEX_ZERO]) == nullptr) { + return nullptr; + } + return NativeGetOneCfgFileSync(env, asyncContext); +} + +napi_value ConfigPolicyNapi::GetOneCfgFileOrAllCfgFilesEx(napi_env env, napi_callback_info info, NapiFunction func) +{ + size_t argc = ARGS_SIZE_THREE; + napi_value argv[ARGS_SIZE_THREE] = {nullptr}; napi_value thisVar = nullptr; void *data = nullptr; napi_get_cb_info(env, info, &argc, argv, &thisVar, &data); @@ -122,7 +139,7 @@ napi_value ConfigPolicyNapi::GetOneCfgFileOrAllCfgFilesEx(napi_env env, napi_cal return ThrowNapiError(env, PARAM_ERROR, "Parameter error. The number of parameters is incorrect."); } - auto asyncContext = std::make_unique(); + auto asyncContext = std::make_shared(); if (ParseRelPath(env, asyncContext->relPath_, argv[ARR_INDEX_ZERO]) == nullptr || ParseFollowMode(env, asyncContext->followMode_, argv[ARR_INDEX_ONE]) == nullptr) { return nullptr; @@ -130,39 +147,20 @@ napi_value ConfigPolicyNapi::GetOneCfgFileOrAllCfgFilesEx(napi_env env, napi_cal if (argc == ARGS_SIZE_TWO) { if (asyncContext->followMode_ == FOLLOWX_MODE_USER_DEFINED) { return ThrowNapiError(env, PARAM_ERROR, - "Parameter error. The followMode is USER_DEFINE, extra must be set."); + "Parameter error. The followMode is USER_DEFINED, extra must be set."); } } - if (argc == ARGS_SIZE_THREE) { - bool matchFlag = MatchValueType(env, argv[ARR_INDEX_TWO], napi_function); - if (matchFlag) { - if (asyncContext->followMode_ == FOLLOWX_MODE_USER_DEFINED) { - return ThrowNapiError(env, PARAM_ERROR, - "Parameter error. The followMode is USER_DEFINE, extra must be set."); - } - napi_create_reference(env, argv[ARR_INDEX_TWO], NAPI_RETURN_ONE, &asyncContext->callbackRef_); - } + if (argc >= ARGS_SIZE_THREE) { if (ParseExtra(env, asyncContext->extra_, argv[ARR_INDEX_TWO]) == nullptr) { return nullptr; } } - if (argc >= ARGS_SIZE_FOUR) { - if (ParseExtra(env, asyncContext->extra_, argv[ARR_INDEX_TWO]) == nullptr) { - return nullptr; - } - bool matchFlag = MatchValueType(env, argv[ARR_INDEX_THREE], napi_function); - if (!matchFlag) { - return ThrowNapiError(env, PARAM_ERROR, "Parameter error. The fourth parameter must be Callback."); - } - napi_create_reference(env, argv[ARR_INDEX_THREE], NAPI_RETURN_ONE, &asyncContext->callbackRef_); - } - - return HandleAsyncWork(env, asyncContext.release(), workName, execute, NativeCallbackComplete); + return func(env, asyncContext); } -napi_value ConfigPolicyNapi::NAPIGetOneCfgFileEx(napi_env env, napi_callback_info info) +napi_value ConfigPolicyNapi::NAPIGetOneCfgFileExSync(napi_env env, napi_callback_info info) { - return GetOneCfgFileOrAllCfgFilesEx(env, info, "NAPIGetOneCfgFileEx", NativeGetOneCfgFileEx); + return GetOneCfgFileOrAllCfgFilesEx(env, info, NativeGetOneCfgFileExSync); } napi_value ConfigPolicyNapi::NAPIGetCfgFiles(napi_env env, napi_callback_info info) @@ -190,9 +188,26 @@ napi_value ConfigPolicyNapi::NAPIGetCfgFiles(napi_env env, napi_callback_info in return HandleAsyncWork(env, asyncContext.release(), "NAPIGetCfgFiles", NativeGetCfgFiles, NativeCallbackComplete); } -napi_value ConfigPolicyNapi::NAPIGetCfgFilesEx(napi_env env, napi_callback_info info) +napi_value ConfigPolicyNapi::NAPIGetCfgFilesSync(napi_env env, napi_callback_info info) { - return GetOneCfgFileOrAllCfgFilesEx(env, info, "NAPIGetCfgFilesEx", NativeGetCfgFilesEx); + size_t argc = ARGS_SIZE_ONE; + napi_value argv[ARGS_SIZE_ONE] = {nullptr}; + napi_value thisVar = nullptr; + void *data = nullptr; + napi_get_cb_info(env, info, &argc, argv, &thisVar, &data); + if (argc < ARGS_SIZE_ONE) { + return ThrowNapiError(env, PARAM_ERROR, "Parameter error. The number of parameters is incorrect."); + } + auto asyncContext = std::make_shared(); + if (ParseRelPath(env, asyncContext->relPath_, argv[ARR_INDEX_ZERO]) == nullptr) { + return nullptr; + } + return NativeGetCfgFilesSync(env, asyncContext); +} + +napi_value ConfigPolicyNapi::NAPIGetCfgFilesExSync(napi_env env, napi_callback_info info) +{ + return GetOneCfgFileOrAllCfgFilesEx(env, info, NativeGetCfgFilesExSync); } napi_value ConfigPolicyNapi::NAPIGetCfgDirList(napi_env env, napi_callback_info info) @@ -215,6 +230,12 @@ napi_value ConfigPolicyNapi::NAPIGetCfgDirList(napi_env env, napi_callback_info NativeCallbackComplete); } +napi_value ConfigPolicyNapi::NAPIGetCfgDirListSync(napi_env env, napi_callback_info info) +{ + auto asyncContext = std::make_shared(); + return NativeGetCfgDirListSync(env, asyncContext); +} + napi_value ConfigPolicyNapi::CreateUndefined(napi_env env) { napi_value result = nullptr; @@ -288,23 +309,27 @@ void ConfigPolicyNapi::NativeGetOneCfgFile(napi_env env, void *data) }; } -void ConfigPolicyNapi::NativeGetOneCfgFileEx(napi_env env, void *data) +napi_value ConfigPolicyNapi::NativeGetOneCfgFileSync(napi_env env, std::shared_ptr context) { - if (data == nullptr) { - HiLog::Error(LABEL, "data is nullptr"); - return; - } - ConfigAsyncContext *asyncCallbackInfo = static_cast(data); char outBuf[MAX_PATH_LEN] = {0}; - GetOneCfgFileEx(asyncCallbackInfo->relPath_.c_str(), outBuf, MAX_PATH_LEN, - asyncCallbackInfo->followMode_, asyncCallbackInfo->extra_.c_str()); - asyncCallbackInfo->pathValue_ = std::string(outBuf); - ReportConfigPolicyEvent(ReportType::CONFIG_POLICY_EVENT, "getOneCfgFileEx", ""); - asyncCallbackInfo->createValueFunc_ = [](napi_env env, ConfigAsyncContext &context) -> napi_value { - napi_value result; - NAPI_CALL(env, napi_create_string_utf8(env, context.pathValue_.c_str(), NAPI_AUTO_LENGTH, &result)); - return result; - }; + GetOneCfgFile(context->relPath_.c_str(), outBuf, MAX_PATH_LEN); + context->pathValue_ = std::string(outBuf); + ReportConfigPolicyEvent(ReportType::CONFIG_POLICY_EVENT, "getOneCfgFileSync", ""); + napi_value result = nullptr; + NAPI_CALL(env, napi_create_string_utf8(env, context->pathValue_.c_str(), NAPI_AUTO_LENGTH, &result)); + return result; +} + +napi_value ConfigPolicyNapi::NativeGetOneCfgFileExSync(napi_env env, std::shared_ptr context) +{ + char outBuf[MAX_PATH_LEN] = {0}; + GetOneCfgFileEx(context->relPath_.c_str(), outBuf, MAX_PATH_LEN, + context->followMode_, context->extra_.c_str()); + context->pathValue_ = std::string(outBuf); + ReportConfigPolicyEvent(ReportType::CONFIG_POLICY_EVENT, "getOneCfgFileExSync", ""); + napi_value result = nullptr; + NAPI_CALL(env, napi_create_string_utf8(env, context->pathValue_.c_str(), NAPI_AUTO_LENGTH, &result)); + return result; } void ConfigPolicyNapi::NativeGetCfgFiles(napi_env env, void *data) @@ -326,24 +351,38 @@ void ConfigPolicyNapi::NativeGetCfgFiles(napi_env env, void *data) ReportConfigPolicyEvent(ReportType::CONFIG_POLICY_EVENT, "getCfgFiles", ""); } -void ConfigPolicyNapi::NativeGetCfgFilesEx(napi_env env, void *data) +napi_value ConfigPolicyNapi::NativeGetCfgFilesSync(napi_env env, std::shared_ptr context) { - if (data == nullptr) { - HiLog::Error(LABEL, "data is nullptr"); - return; + CfgFiles *cfgFiles = GetCfgFiles(context->relPath_.c_str()); + for (size_t i = 0; i < MAX_CFG_POLICY_DIRS_CNT; i++) { + if (cfgFiles != nullptr && cfgFiles->paths[i] != nullptr) { + context->paths_.push_back(cfgFiles->paths[i]); + } } + FreeCfgFiles(cfgFiles); + ReportConfigPolicyEvent(ReportType::CONFIG_POLICY_EVENT, "getCfgFilesSync", ""); + return CreateArraysValue(env, context); +} - ConfigAsyncContext *asyncCallbackInfo = static_cast(data); - CfgFiles *cfgFiles = GetCfgFilesEx(asyncCallbackInfo->relPath_.c_str(), - asyncCallbackInfo->followMode_, asyncCallbackInfo->extra_.c_str()); +napi_value ConfigPolicyNapi::NativeGetCfgFilesExSync(napi_env env, std::shared_ptr context) +{ + CfgFiles *cfgFiles = GetCfgFilesEx(context->relPath_.c_str(), + context->followMode_, context->extra_.c_str()); for (size_t i = 0; i < MAX_CFG_POLICY_DIRS_CNT; i++) { if (cfgFiles != nullptr && cfgFiles->paths[i] != nullptr) { - asyncCallbackInfo->paths_.push_back(cfgFiles->paths[i]); + context->paths_.push_back(cfgFiles->paths[i]); } } FreeCfgFiles(cfgFiles); - CreateArraysValueFunc(*asyncCallbackInfo); - ReportConfigPolicyEvent(ReportType::CONFIG_POLICY_EVENT, "getCfgFilesEx", ""); + ReportConfigPolicyEvent(ReportType::CONFIG_POLICY_EVENT, "getCfgFilesExSync", ""); + napi_value result = nullptr; + NAPI_CALL(env, napi_create_array_with_length(env, context->paths_.size(), &result)); + for (size_t i = 0; i < context->paths_.size(); i++) { + napi_value element = nullptr; + NAPI_CALL(env, napi_create_string_utf8(env, context->paths_[i].c_str(), NAPI_AUTO_LENGTH, &element)); + NAPI_CALL(env, napi_set_element(env, result, i, element)); + } + return result; } void ConfigPolicyNapi::NativeGetCfgDirList(napi_env env, void *data) @@ -365,6 +404,31 @@ void ConfigPolicyNapi::NativeGetCfgDirList(napi_env env, void *data) ReportConfigPolicyEvent(ReportType::CONFIG_POLICY_EVENT, "getCfgDirList", ""); } +napi_value ConfigPolicyNapi::NativeGetCfgDirListSync(napi_env env, std::shared_ptr context) +{ + CfgDir *cfgDir = GetCfgDirList(); + for (size_t i = 0; i < MAX_CFG_POLICY_DIRS_CNT; i++) { + if (cfgDir != nullptr && cfgDir->paths[i] != nullptr) { + context->paths_.push_back(cfgDir->paths[i]); + } + } + FreeCfgDirList(cfgDir); + ReportConfigPolicyEvent(ReportType::CONFIG_POLICY_EVENT, "getCfgDirListSync", ""); + return CreateArraysValue(env, context); +} + +napi_value ConfigPolicyNapi::CreateArraysValue(napi_env env, std::shared_ptr context) +{ + napi_value result = nullptr; + NAPI_CALL(env, napi_create_array_with_length(env, context->paths_.size(), &result)); + for (size_t i = 0; i < context->paths_.size(); i++) { + napi_value element = nullptr; + NAPI_CALL(env, napi_create_string_utf8(env, context->paths_[i].c_str(), NAPI_AUTO_LENGTH, &element)); + NAPI_CALL(env, napi_set_element(env, result, i, element)); + } + return result; +} + void ConfigPolicyNapi::CreateArraysValueFunc(ConfigAsyncContext &asyncCallbackInfo) { asyncCallbackInfo.createValueFunc_ = [](napi_env env, ConfigAsyncContext &context) -> napi_value { -- Gitee From 43de31ab6dd1095a0514ad8ac3aa3a6b96f4f635 Mon Sep 17 00:00:00 2001 From: xiekaiming Date: Wed, 18 Oct 2023 14:51:44 +0800 Subject: [PATCH 2/7] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=88=A4=E7=A9=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: xiekaiming --- interfaces/kits/js/src/config_policy_napi.cpp | 39 +++++++++---------- 1 file changed, 18 insertions(+), 21 deletions(-) diff --git a/interfaces/kits/js/src/config_policy_napi.cpp b/interfaces/kits/js/src/config_policy_napi.cpp index 9aaf346..d881ff9 100644 --- a/interfaces/kits/js/src/config_policy_napi.cpp +++ b/interfaces/kits/js/src/config_policy_napi.cpp @@ -323,8 +323,7 @@ napi_value ConfigPolicyNapi::NativeGetOneCfgFileSync(napi_env env, std::shared_p napi_value ConfigPolicyNapi::NativeGetOneCfgFileExSync(napi_env env, std::shared_ptr context) { char outBuf[MAX_PATH_LEN] = {0}; - GetOneCfgFileEx(context->relPath_.c_str(), outBuf, MAX_PATH_LEN, - context->followMode_, context->extra_.c_str()); + GetOneCfgFileEx(context->relPath_.c_str(), outBuf, MAX_PATH_LEN, context->followMode_, context->extra_.c_str()); context->pathValue_ = std::string(outBuf); ReportConfigPolicyEvent(ReportType::CONFIG_POLICY_EVENT, "getOneCfgFileExSync", ""); napi_value result = nullptr; @@ -354,9 +353,11 @@ void ConfigPolicyNapi::NativeGetCfgFiles(napi_env env, void *data) napi_value ConfigPolicyNapi::NativeGetCfgFilesSync(napi_env env, std::shared_ptr context) { CfgFiles *cfgFiles = GetCfgFiles(context->relPath_.c_str()); - for (size_t i = 0; i < MAX_CFG_POLICY_DIRS_CNT; i++) { - if (cfgFiles != nullptr && cfgFiles->paths[i] != nullptr) { - context->paths_.push_back(cfgFiles->paths[i]); + if (cfgFiles != nullptr) { + for (size_t i = 0; i < MAX_CFG_POLICY_DIRS_CNT; i++) { + if (cfgFiles->paths[i] != nullptr) { + context->paths_.push_back(cfgFiles->paths[i]); + } } } FreeCfgFiles(cfgFiles); @@ -366,23 +367,17 @@ napi_value ConfigPolicyNapi::NativeGetCfgFilesSync(napi_env env, std::shared_ptr napi_value ConfigPolicyNapi::NativeGetCfgFilesExSync(napi_env env, std::shared_ptr context) { - CfgFiles *cfgFiles = GetCfgFilesEx(context->relPath_.c_str(), - context->followMode_, context->extra_.c_str()); - for (size_t i = 0; i < MAX_CFG_POLICY_DIRS_CNT; i++) { - if (cfgFiles != nullptr && cfgFiles->paths[i] != nullptr) { - context->paths_.push_back(cfgFiles->paths[i]); + CfgFiles *cfgFiles = GetCfgFilesEx(context->relPath_.c_str(), context->followMode_, context->extra_.c_str()); + if (cfgFiles != nullptr) { + for (size_t i = 0; i < MAX_CFG_POLICY_DIRS_CNT; i++) { + if (cfgFiles->paths[i] != nullptr) { + context->paths_.push_back(cfgFiles->paths[i]); + } } } FreeCfgFiles(cfgFiles); ReportConfigPolicyEvent(ReportType::CONFIG_POLICY_EVENT, "getCfgFilesExSync", ""); - napi_value result = nullptr; - NAPI_CALL(env, napi_create_array_with_length(env, context->paths_.size(), &result)); - for (size_t i = 0; i < context->paths_.size(); i++) { - napi_value element = nullptr; - NAPI_CALL(env, napi_create_string_utf8(env, context->paths_[i].c_str(), NAPI_AUTO_LENGTH, &element)); - NAPI_CALL(env, napi_set_element(env, result, i, element)); - } - return result; + return CreateArraysValue(env, context); } void ConfigPolicyNapi::NativeGetCfgDirList(napi_env env, void *data) @@ -407,9 +402,11 @@ void ConfigPolicyNapi::NativeGetCfgDirList(napi_env env, void *data) napi_value ConfigPolicyNapi::NativeGetCfgDirListSync(napi_env env, std::shared_ptr context) { CfgDir *cfgDir = GetCfgDirList(); - for (size_t i = 0; i < MAX_CFG_POLICY_DIRS_CNT; i++) { - if (cfgDir != nullptr && cfgDir->paths[i] != nullptr) { - context->paths_.push_back(cfgDir->paths[i]); + if (cfgDir != nullptr) { + for (size_t i = 0; i < MAX_CFG_POLICY_DIRS_CNT; i++) { + if (cfgDir->paths[i] != nullptr) { + context->paths_.push_back(cfgDir->paths[i]); + } } } FreeCfgDirList(cfgDir); -- Gitee From e28dfcb152f21a7643aad1c9269148f820e65300 Mon Sep 17 00:00:00 2001 From: xiekaiming Date: Wed, 18 Oct 2023 15:51:26 +0800 Subject: [PATCH 3/7] =?UTF-8?q?=E5=AF=B9GetOneCfgFile=E7=9A=84=E7=BB=93?= =?UTF-8?q?=E6=9E=9C=E5=81=9A=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: xiekaiming --- interfaces/kits/js/src/config_policy_napi.cpp | 23 +++++++++++++------ 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/interfaces/kits/js/src/config_policy_napi.cpp b/interfaces/kits/js/src/config_policy_napi.cpp index d881ff9..d9d579a 100644 --- a/interfaces/kits/js/src/config_policy_napi.cpp +++ b/interfaces/kits/js/src/config_policy_napi.cpp @@ -312,8 +312,12 @@ void ConfigPolicyNapi::NativeGetOneCfgFile(napi_env env, void *data) napi_value ConfigPolicyNapi::NativeGetOneCfgFileSync(napi_env env, std::shared_ptr context) { char outBuf[MAX_PATH_LEN] = {0}; - GetOneCfgFile(context->relPath_.c_str(), outBuf, MAX_PATH_LEN); - context->pathValue_ = std::string(outBuf); + char *filePath = GetOneCfgFile(context->relPath_.c_str(), outBuf, MAX_PATH_LEN); + if (filePath == nullptr) { + HiLog::Info(LABEL, "GetOneCfgFile result is nullptr."); + } else { + context->pathValue_ = std::string(filePath); + } ReportConfigPolicyEvent(ReportType::CONFIG_POLICY_EVENT, "getOneCfgFileSync", ""); napi_value result = nullptr; NAPI_CALL(env, napi_create_string_utf8(env, context->pathValue_.c_str(), NAPI_AUTO_LENGTH, &result)); @@ -323,8 +327,13 @@ napi_value ConfigPolicyNapi::NativeGetOneCfgFileSync(napi_env env, std::shared_p napi_value ConfigPolicyNapi::NativeGetOneCfgFileExSync(napi_env env, std::shared_ptr context) { char outBuf[MAX_PATH_LEN] = {0}; - GetOneCfgFileEx(context->relPath_.c_str(), outBuf, MAX_PATH_LEN, context->followMode_, context->extra_.c_str()); - context->pathValue_ = std::string(outBuf); + char *filePath = GetOneCfgFileEx(context->relPath_.c_str(), outBuf, MAX_PATH_LEN, context->followMode_, + context->extra_.c_str()); + if (filePath == nullptr) { + HiLog::Info(LABEL, "GetOneCfgFileEx result is nullptr."); + } else { + context->pathValue_ = std::string(filePath); + } ReportConfigPolicyEvent(ReportType::CONFIG_POLICY_EVENT, "getOneCfgFileExSync", ""); napi_value result = nullptr; NAPI_CALL(env, napi_create_string_utf8(env, context->pathValue_.c_str(), NAPI_AUTO_LENGTH, &result)); @@ -359,8 +368,8 @@ napi_value ConfigPolicyNapi::NativeGetCfgFilesSync(napi_env env, std::shared_ptr context->paths_.push_back(cfgFiles->paths[i]); } } + FreeCfgFiles(cfgFiles); } - FreeCfgFiles(cfgFiles); ReportConfigPolicyEvent(ReportType::CONFIG_POLICY_EVENT, "getCfgFilesSync", ""); return CreateArraysValue(env, context); } @@ -374,8 +383,8 @@ napi_value ConfigPolicyNapi::NativeGetCfgFilesExSync(napi_env env, std::shared_p context->paths_.push_back(cfgFiles->paths[i]); } } + FreeCfgFiles(cfgFiles); } - FreeCfgFiles(cfgFiles); ReportConfigPolicyEvent(ReportType::CONFIG_POLICY_EVENT, "getCfgFilesExSync", ""); return CreateArraysValue(env, context); } @@ -408,8 +417,8 @@ napi_value ConfigPolicyNapi::NativeGetCfgDirListSync(napi_env env, std::shared_p context->paths_.push_back(cfgDir->paths[i]); } } + FreeCfgDirList(cfgDir); } - FreeCfgDirList(cfgDir); ReportConfigPolicyEvent(ReportType::CONFIG_POLICY_EVENT, "getCfgDirListSync", ""); return CreateArraysValue(env, context); } -- Gitee From f5c794ccc938a626c9afa8a961f1ed486b31be7b Mon Sep 17 00:00:00 2001 From: xiekaiming Date: Thu, 19 Oct 2023 16:39:38 +0800 Subject: [PATCH 4/7] =?UTF-8?q?=E6=97=A0=E5=BC=82=E6=AD=A5=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=EF=BC=8C=E5=90=8C=E6=AD=A5=E6=8E=A5=E5=8F=A3=E4=B8=8D?= =?UTF-8?q?=E8=83=BD=E4=BB=A5Sync=E7=BB=93=E5=B0=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: xiekaiming --- .../kits/js/include/config_policy_napi.h | 8 ++++---- interfaces/kits/js/src/config_policy_napi.cpp | 20 +++++++++---------- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/interfaces/kits/js/include/config_policy_napi.h b/interfaces/kits/js/include/config_policy_napi.h index 73bb17b..aba39fe 100644 --- a/interfaces/kits/js/include/config_policy_napi.h +++ b/interfaces/kits/js/include/config_policy_napi.h @@ -52,8 +52,8 @@ private: static napi_value NAPIGetCfgFiles(napi_env env, napi_callback_info info); static napi_value NAPIGetOneCfgFileSync(napi_env env, napi_callback_info info); static napi_value NAPIGetCfgFilesSync(napi_env env, napi_callback_info info); - static napi_value NAPIGetOneCfgFileExSync(napi_env env, napi_callback_info info); - static napi_value NAPIGetCfgFilesExSync(napi_env env, napi_callback_info info); + static napi_value NAPIGetOneCfgFileEx(napi_env env, napi_callback_info info); + static napi_value NAPIGetCfgFilesEx(napi_env env, napi_callback_info info); static napi_value NAPIGetCfgDirList(napi_env env, napi_callback_info info); static napi_value NAPIGetCfgDirListSync(napi_env env, napi_callback_info info); static napi_value CreateUndefined(napi_env env); @@ -68,8 +68,8 @@ private: static napi_value NativeGetOneCfgFileSync(napi_env env, std::shared_ptr context); static napi_value NativeGetCfgFilesSync(napi_env env, std::shared_ptr context); static napi_value NativeGetCfgDirListSync(napi_env env, std::shared_ptr context); - static napi_value NativeGetOneCfgFileExSync(napi_env env, std::shared_ptr context); - static napi_value NativeGetCfgFilesExSync(napi_env env, std::shared_ptr context); + static napi_value NativeGetOneCfgFileEx(napi_env env, std::shared_ptr context); + static napi_value NativeGetCfgFilesEx(napi_env env, std::shared_ptr context); static void NativeCallbackComplete(napi_env env, napi_status status, void *data); static napi_value ParseRelPath(napi_env env, std::string ¶m, napi_value args); static napi_value ParseFollowMode(napi_env env, int32_t ¶m, napi_value args); diff --git a/interfaces/kits/js/src/config_policy_napi.cpp b/interfaces/kits/js/src/config_policy_napi.cpp index d9d579a..192b1b3 100644 --- a/interfaces/kits/js/src/config_policy_napi.cpp +++ b/interfaces/kits/js/src/config_policy_napi.cpp @@ -47,10 +47,10 @@ napi_value ConfigPolicyNapi::Init(napi_env env, napi_value exports) napi_property_descriptor property[] = { DECLARE_NAPI_FUNCTION("getOneCfgFile", ConfigPolicyNapi::NAPIGetOneCfgFile), DECLARE_NAPI_FUNCTION("getOneCfgFileSync", ConfigPolicyNapi::NAPIGetOneCfgFileSync), - DECLARE_NAPI_FUNCTION("getOneCfgFileExSync", ConfigPolicyNapi::NAPIGetOneCfgFileExSync), + DECLARE_NAPI_FUNCTION("getOneCfgFileEx", ConfigPolicyNapi::NAPIGetOneCfgFileEx), DECLARE_NAPI_FUNCTION("getCfgFiles", ConfigPolicyNapi::NAPIGetCfgFiles), DECLARE_NAPI_FUNCTION("getCfgFilesSync", ConfigPolicyNapi::NAPIGetCfgFilesSync), - DECLARE_NAPI_FUNCTION("getCfgFilesExSync", ConfigPolicyNapi::NAPIGetCfgFilesExSync), + DECLARE_NAPI_FUNCTION("getCfgFilesEx", ConfigPolicyNapi::NAPIGetCfgFilesEx), DECLARE_NAPI_FUNCTION("getCfgDirList", ConfigPolicyNapi::NAPIGetCfgDirList), DECLARE_NAPI_FUNCTION("getCfgDirListSync", ConfigPolicyNapi::NAPIGetCfgDirListSync), @@ -158,9 +158,9 @@ napi_value ConfigPolicyNapi::GetOneCfgFileOrAllCfgFilesEx(napi_env env, napi_cal return func(env, asyncContext); } -napi_value ConfigPolicyNapi::NAPIGetOneCfgFileExSync(napi_env env, napi_callback_info info) +napi_value ConfigPolicyNapi::NAPIGetOneCfgFileEx(napi_env env, napi_callback_info info) { - return GetOneCfgFileOrAllCfgFilesEx(env, info, NativeGetOneCfgFileExSync); + return GetOneCfgFileOrAllCfgFilesEx(env, info, NativeGetOneCfgFileEx); } napi_value ConfigPolicyNapi::NAPIGetCfgFiles(napi_env env, napi_callback_info info) @@ -205,9 +205,9 @@ napi_value ConfigPolicyNapi::NAPIGetCfgFilesSync(napi_env env, napi_callback_inf return NativeGetCfgFilesSync(env, asyncContext); } -napi_value ConfigPolicyNapi::NAPIGetCfgFilesExSync(napi_env env, napi_callback_info info) +napi_value ConfigPolicyNapi::NAPIGetCfgFilesEx(napi_env env, napi_callback_info info) { - return GetOneCfgFileOrAllCfgFilesEx(env, info, NativeGetCfgFilesExSync); + return GetOneCfgFileOrAllCfgFilesEx(env, info, NativeGetCfgFilesEx); } napi_value ConfigPolicyNapi::NAPIGetCfgDirList(napi_env env, napi_callback_info info) @@ -324,7 +324,7 @@ napi_value ConfigPolicyNapi::NativeGetOneCfgFileSync(napi_env env, std::shared_p return result; } -napi_value ConfigPolicyNapi::NativeGetOneCfgFileExSync(napi_env env, std::shared_ptr context) +napi_value ConfigPolicyNapi::NativeGetOneCfgFileEx(napi_env env, std::shared_ptr context) { char outBuf[MAX_PATH_LEN] = {0}; char *filePath = GetOneCfgFileEx(context->relPath_.c_str(), outBuf, MAX_PATH_LEN, context->followMode_, @@ -334,7 +334,7 @@ napi_value ConfigPolicyNapi::NativeGetOneCfgFileExSync(napi_env env, std::shared } else { context->pathValue_ = std::string(filePath); } - ReportConfigPolicyEvent(ReportType::CONFIG_POLICY_EVENT, "getOneCfgFileExSync", ""); + ReportConfigPolicyEvent(ReportType::CONFIG_POLICY_EVENT, "getOneCfgFileEx", ""); napi_value result = nullptr; NAPI_CALL(env, napi_create_string_utf8(env, context->pathValue_.c_str(), NAPI_AUTO_LENGTH, &result)); return result; @@ -374,7 +374,7 @@ napi_value ConfigPolicyNapi::NativeGetCfgFilesSync(napi_env env, std::shared_ptr return CreateArraysValue(env, context); } -napi_value ConfigPolicyNapi::NativeGetCfgFilesExSync(napi_env env, std::shared_ptr context) +napi_value ConfigPolicyNapi::NativeGetCfgFilesEx(napi_env env, std::shared_ptr context) { CfgFiles *cfgFiles = GetCfgFilesEx(context->relPath_.c_str(), context->followMode_, context->extra_.c_str()); if (cfgFiles != nullptr) { @@ -385,7 +385,7 @@ napi_value ConfigPolicyNapi::NativeGetCfgFilesExSync(napi_env env, std::shared_p } FreeCfgFiles(cfgFiles); } - ReportConfigPolicyEvent(ReportType::CONFIG_POLICY_EVENT, "getCfgFilesExSync", ""); + ReportConfigPolicyEvent(ReportType::CONFIG_POLICY_EVENT, "getCfgFilesEx", ""); return CreateArraysValue(env, context); } -- Gitee From e772e38382c663b3282ba51364ee87c9df697fdf Mon Sep 17 00:00:00 2001 From: xiekaiming Date: Fri, 20 Oct 2023 16:12:03 +0800 Subject: [PATCH 5/7] =?UTF-8?q?=E9=9A=8FX=E8=83=BD=E5=8A=9B=E9=80=9A?= =?UTF-8?q?=E8=BF=87=E6=99=AE=E9=80=9A=E6=8E=A5=E5=8F=A3=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E5=8F=AF=E9=80=89=E5=8F=82=E6=95=B0=E8=BF=9B=E8=A1=8C=E6=89=A9?= =?UTF-8?q?=E5=B1=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: xiekaiming --- .../kits/js/include/config_policy_napi.h | 8 +- interfaces/kits/js/src/config_policy_napi.cpp | 189 ++++++++---------- 2 files changed, 84 insertions(+), 113 deletions(-) diff --git a/interfaces/kits/js/include/config_policy_napi.h b/interfaces/kits/js/include/config_policy_napi.h index aba39fe..fb414ec 100644 --- a/interfaces/kits/js/include/config_policy_napi.h +++ b/interfaces/kits/js/include/config_policy_napi.h @@ -52,15 +52,15 @@ private: static napi_value NAPIGetCfgFiles(napi_env env, napi_callback_info info); static napi_value NAPIGetOneCfgFileSync(napi_env env, napi_callback_info info); static napi_value NAPIGetCfgFilesSync(napi_env env, napi_callback_info info); - static napi_value NAPIGetOneCfgFileEx(napi_env env, napi_callback_info info); - static napi_value NAPIGetCfgFilesEx(napi_env env, napi_callback_info info); static napi_value NAPIGetCfgDirList(napi_env env, napi_callback_info info); static napi_value NAPIGetCfgDirListSync(napi_env env, napi_callback_info info); static napi_value CreateUndefined(napi_env env); static std::string GetStringFromNAPI(napi_env env, napi_value value); static napi_value HandleAsyncWork(napi_env env, ConfigAsyncContext *context, std::string workName, napi_async_execute_callback execute, napi_async_complete_callback complete); - static napi_value GetOneCfgFileOrAllCfgFilesEx(napi_env env, napi_callback_info info, NapiFunction func); + static napi_value GetOneCfgFileOrAllCfgFilesSync(napi_env env, napi_callback_info info, NapiFunction func); + static napi_value GetOneCfgFileOrAllCfgFiles(napi_env env, napi_callback_info info, + const std::string &workName, napi_async_execute_callback execute); static bool MatchValueType(napi_env env, napi_value value, napi_valuetype targetType); static void NativeGetOneCfgFile(napi_env env, void *data); static void NativeGetCfgFiles(napi_env env, void *data); @@ -68,8 +68,6 @@ private: static napi_value NativeGetOneCfgFileSync(napi_env env, std::shared_ptr context); static napi_value NativeGetCfgFilesSync(napi_env env, std::shared_ptr context); static napi_value NativeGetCfgDirListSync(napi_env env, std::shared_ptr context); - static napi_value NativeGetOneCfgFileEx(napi_env env, std::shared_ptr context); - static napi_value NativeGetCfgFilesEx(napi_env env, std::shared_ptr context); static void NativeCallbackComplete(napi_env env, napi_status status, void *data); static napi_value ParseRelPath(napi_env env, std::string ¶m, napi_value args); static napi_value ParseFollowMode(napi_env env, int32_t ¶m, napi_value args); diff --git a/interfaces/kits/js/src/config_policy_napi.cpp b/interfaces/kits/js/src/config_policy_napi.cpp index 192b1b3..9235fe2 100644 --- a/interfaces/kits/js/src/config_policy_napi.cpp +++ b/interfaces/kits/js/src/config_policy_napi.cpp @@ -29,9 +29,11 @@ using namespace OHOS::HiviewDFX; static constexpr size_t ARGS_SIZE_ONE = 1; static constexpr size_t ARGS_SIZE_TWO = 2; static constexpr size_t ARGS_SIZE_THREE = 3; +static constexpr size_t ARGS_SIZE_FOUR = 4; static constexpr int32_t ARR_INDEX_ZERO = 0; static constexpr int32_t ARR_INDEX_ONE = 1; static constexpr int32_t ARR_INDEX_TWO = 2; +static constexpr int32_t ARR_INDEX_THREE = 3; static constexpr int32_t NAPI_RETURN_ZERO = 0; static constexpr int32_t NAPI_RETURN_ONE = 1; // Param Error Code @@ -47,10 +49,8 @@ napi_value ConfigPolicyNapi::Init(napi_env env, napi_value exports) napi_property_descriptor property[] = { DECLARE_NAPI_FUNCTION("getOneCfgFile", ConfigPolicyNapi::NAPIGetOneCfgFile), DECLARE_NAPI_FUNCTION("getOneCfgFileSync", ConfigPolicyNapi::NAPIGetOneCfgFileSync), - DECLARE_NAPI_FUNCTION("getOneCfgFileEx", ConfigPolicyNapi::NAPIGetOneCfgFileEx), DECLARE_NAPI_FUNCTION("getCfgFiles", ConfigPolicyNapi::NAPIGetCfgFiles), DECLARE_NAPI_FUNCTION("getCfgFilesSync", ConfigPolicyNapi::NAPIGetCfgFilesSync), - DECLARE_NAPI_FUNCTION("getCfgFilesEx", ConfigPolicyNapi::NAPIGetCfgFilesEx), DECLARE_NAPI_FUNCTION("getCfgDirList", ConfigPolicyNapi::NAPIGetCfgDirList), DECLARE_NAPI_FUNCTION("getCfgDirListSync", ConfigPolicyNapi::NAPIGetCfgDirListSync), @@ -87,86 +87,54 @@ void ConfigPolicyNapi::CreateFollowXModeObject(napi_env env, napi_value value) napi_value ConfigPolicyNapi::NAPIGetOneCfgFile(napi_env env, napi_callback_info info) { - size_t argc = ARGS_SIZE_TWO; - napi_value argv[ARGS_SIZE_TWO] = {nullptr}; - napi_value thisVar = nullptr; - void *data = nullptr; - napi_get_cb_info(env, info, &argc, argv, &thisVar, &data); - if (argc < ARGS_SIZE_ONE) { - return ThrowNapiError(env, PARAM_ERROR, "Parameter error. The number of parameters is incorrect."); - } - - auto asyncContext = std::make_unique(); - if (ParseRelPath(env, asyncContext->relPath_, argv[ARR_INDEX_ZERO]) == nullptr) { - return nullptr; - } - if (argc == ARGS_SIZE_TWO) { - bool matchFlag = MatchValueType(env, argv[ARR_INDEX_ONE], napi_function); - if (!matchFlag) { - return ThrowNapiError(env, PARAM_ERROR, "Parameter error. The second parameter must be Callback."); - } - napi_create_reference(env, argv[ARR_INDEX_ONE], NAPI_RETURN_ONE, &asyncContext->callbackRef_); - } - return HandleAsyncWork(env, asyncContext.release(), "NAPIGetOneCfgFile", NativeGetOneCfgFile, - NativeCallbackComplete); + return GetOneCfgFileOrAllCfgFiles(env, info, "NAPIGetOneCfgFile", NativeGetOneCfgFile); } napi_value ConfigPolicyNapi::NAPIGetOneCfgFileSync(napi_env env, napi_callback_info info) { - size_t argc = ARGS_SIZE_ONE; - napi_value argv[ARGS_SIZE_ONE] = {nullptr}; - napi_value thisVar = nullptr; - void *data = nullptr; - napi_get_cb_info(env, info, &argc, argv, &thisVar, &data); - if (argc < ARGS_SIZE_ONE) { - return ThrowNapiError(env, PARAM_ERROR, "Parameter error. The number of parameters is incorrect."); - } - auto asyncContext = std::make_shared(); - if (ParseRelPath(env, asyncContext->relPath_, argv[ARR_INDEX_ZERO]) == nullptr) { - return nullptr; - } - return NativeGetOneCfgFileSync(env, asyncContext); + return GetOneCfgFileOrAllCfgFilesSync(env, info, NativeGetOneCfgFileSync); } -napi_value ConfigPolicyNapi::GetOneCfgFileOrAllCfgFilesEx(napi_env env, napi_callback_info info, NapiFunction func) +napi_value ConfigPolicyNapi::GetOneCfgFileOrAllCfgFilesSync(napi_env env, napi_callback_info info, NapiFunction func) { size_t argc = ARGS_SIZE_THREE; napi_value argv[ARGS_SIZE_THREE] = {nullptr}; napi_value thisVar = nullptr; void *data = nullptr; napi_get_cb_info(env, info, &argc, argv, &thisVar, &data); - if (argc < ARGS_SIZE_TWO) { + if (argc < ARGS_SIZE_ONE) { return ThrowNapiError(env, PARAM_ERROR, "Parameter error. The number of parameters is incorrect."); } auto asyncContext = std::make_shared(); - if (ParseRelPath(env, asyncContext->relPath_, argv[ARR_INDEX_ZERO]) == nullptr || - ParseFollowMode(env, asyncContext->followMode_, argv[ARR_INDEX_ONE]) == nullptr) { + asyncContext->followMode_ = FOLLOWX_MODE_DEFAULT; + if (ParseRelPath(env, asyncContext->relPath_, argv[ARR_INDEX_ZERO]) == nullptr) { return nullptr; } + if (argc == ARGS_SIZE_TWO) { + if (ParseFollowMode(env, asyncContext->followMode_, argv[ARR_INDEX_ONE]) == nullptr) { + return nullptr; + } if (asyncContext->followMode_ == FOLLOWX_MODE_USER_DEFINED) { return ThrowNapiError(env, PARAM_ERROR, "Parameter error. The followMode is USER_DEFINED, extra must be set."); } } if (argc >= ARGS_SIZE_THREE) { - if (ParseExtra(env, asyncContext->extra_, argv[ARR_INDEX_TWO]) == nullptr) { + if (ParseFollowMode(env, asyncContext->followMode_, argv[ARR_INDEX_ONE]) == nullptr || + ParseExtra(env, asyncContext->extra_, argv[ARR_INDEX_TWO]) == nullptr) { return nullptr; } } return func(env, asyncContext); } -napi_value ConfigPolicyNapi::NAPIGetOneCfgFileEx(napi_env env, napi_callback_info info) -{ - return GetOneCfgFileOrAllCfgFilesEx(env, info, NativeGetOneCfgFileEx); -} - -napi_value ConfigPolicyNapi::NAPIGetCfgFiles(napi_env env, napi_callback_info info) +napi_value ConfigPolicyNapi::GetOneCfgFileOrAllCfgFiles(napi_env env, napi_callback_info info, + const std::string &workName, napi_async_execute_callback execute) { - size_t argc = ARGS_SIZE_TWO; - napi_value argv[ARGS_SIZE_TWO] = {nullptr}; + size_t argc = ARGS_SIZE_FOUR; + napi_value argv[ARGS_SIZE_FOUR] = {nullptr}; napi_value thisVar = nullptr; void *data = nullptr; napi_get_cb_info(env, info, &argc, argv, &thisVar, &data); @@ -175,39 +143,65 @@ napi_value ConfigPolicyNapi::NAPIGetCfgFiles(napi_env env, napi_callback_info in } auto asyncContext = std::make_unique(); + asyncContext->followMode_ = FOLLOWX_MODE_DEFAULT; if (ParseRelPath(env, asyncContext->relPath_, argv[ARR_INDEX_ZERO]) == nullptr) { return nullptr; } if (argc == ARGS_SIZE_TWO) { bool matchFlag = MatchValueType(env, argv[ARR_INDEX_ONE], napi_function); + if (matchFlag) { + napi_create_reference(env, argv[ARR_INDEX_ONE], NAPI_RETURN_ONE, &asyncContext->callbackRef_); + } else { + if (ParseFollowMode(env, asyncContext->followMode_, argv[ARR_INDEX_ONE]) == nullptr) { + return nullptr; + } + if (asyncContext->followMode_ == FOLLOWX_MODE_USER_DEFINED) { + return ThrowNapiError(env, PARAM_ERROR, + "Parameter error. The followMode is USER_DEFINED, extra must be set."); + } + } + } + + if (argc == ARGS_SIZE_THREE) { + if (ParseFollowMode(env, asyncContext->followMode_, argv[ARR_INDEX_ONE]) == nullptr) { + return nullptr; + } + bool matchFlag = MatchValueType(env, argv[ARR_INDEX_TWO], napi_function); + if (matchFlag) { + if (asyncContext->followMode_ == FOLLOWX_MODE_USER_DEFINED) { + return ThrowNapiError(env, PARAM_ERROR, + "Parameter error. The followMode is USER_DEFINED, extra must be set."); + } + napi_create_reference(env, argv[ARR_INDEX_TWO], NAPI_RETURN_ONE, &asyncContext->callbackRef_); + } else { + if (ParseExtra(env, asyncContext->extra_, argv[ARR_INDEX_TWO]) == nullptr) { + return nullptr; + } + } + } + + if (argc == ARGS_SIZE_FOUR) { + if (ParseFollowMode(env, asyncContext->followMode_, argv[ARR_INDEX_ONE]) == nullptr || + ParseExtra(env, asyncContext->extra_, argv[ARR_INDEX_TWO]) == nullptr) { + return nullptr; + } + bool matchFlag = MatchValueType(env, argv[ARR_INDEX_THREE], napi_function); if (!matchFlag) { return ThrowNapiError(env, PARAM_ERROR, "Parameter error. The second parameter must be Callback."); } - napi_create_reference(env, argv[ARR_INDEX_ONE], NAPI_RETURN_ONE, &asyncContext->callbackRef_); + napi_create_reference(env, argv[ARR_INDEX_THREE], NAPI_RETURN_ONE, &asyncContext->callbackRef_); } - return HandleAsyncWork(env, asyncContext.release(), "NAPIGetCfgFiles", NativeGetCfgFiles, NativeCallbackComplete); + return HandleAsyncWork(env, asyncContext.release(), workName, execute, NativeCallbackComplete); } -napi_value ConfigPolicyNapi::NAPIGetCfgFilesSync(napi_env env, napi_callback_info info) +napi_value ConfigPolicyNapi::NAPIGetCfgFiles(napi_env env, napi_callback_info info) { - size_t argc = ARGS_SIZE_ONE; - napi_value argv[ARGS_SIZE_ONE] = {nullptr}; - napi_value thisVar = nullptr; - void *data = nullptr; - napi_get_cb_info(env, info, &argc, argv, &thisVar, &data); - if (argc < ARGS_SIZE_ONE) { - return ThrowNapiError(env, PARAM_ERROR, "Parameter error. The number of parameters is incorrect."); - } - auto asyncContext = std::make_shared(); - if (ParseRelPath(env, asyncContext->relPath_, argv[ARR_INDEX_ZERO]) == nullptr) { - return nullptr; - } - return NativeGetCfgFilesSync(env, asyncContext); + return GetOneCfgFileOrAllCfgFiles(env, info, "NAPIGetCfgFiles", NativeGetCfgFiles); } -napi_value ConfigPolicyNapi::NAPIGetCfgFilesEx(napi_env env, napi_callback_info info) +napi_value ConfigPolicyNapi::NAPIGetCfgFilesSync(napi_env env, napi_callback_info info) { - return GetOneCfgFileOrAllCfgFilesEx(env, info, NativeGetCfgFilesEx); + return GetOneCfgFileOrAllCfgFilesSync(env, info, NativeGetCfgFilesSync); } napi_value ConfigPolicyNapi::NAPIGetCfgDirList(napi_env env, napi_callback_info info) @@ -299,8 +293,13 @@ void ConfigPolicyNapi::NativeGetOneCfgFile(napi_env env, void *data) } ConfigAsyncContext *asyncCallbackInfo = static_cast(data); char outBuf[MAX_PATH_LEN] = {0}; - GetOneCfgFile(asyncCallbackInfo->relPath_.c_str(), outBuf, MAX_PATH_LEN); - asyncCallbackInfo->pathValue_ = std::string(outBuf); + char *filePath = GetOneCfgFileEx(asyncCallbackInfo->relPath_.c_str(), outBuf, MAX_PATH_LEN, + asyncCallbackInfo->followMode_, asyncCallbackInfo->extra_.c_str()); + if (filePath == nullptr) { + HiLog::Info(LABEL, "GetOneCfgFileEx result is nullptr."); + } else { + asyncCallbackInfo->pathValue_ = std::string(filePath); + } ReportConfigPolicyEvent(ReportType::CONFIG_POLICY_EVENT, "getOneCfgFile", ""); asyncCallbackInfo->createValueFunc_ = [](napi_env env, ConfigAsyncContext &context) -> napi_value { napi_value result; @@ -312,29 +311,14 @@ void ConfigPolicyNapi::NativeGetOneCfgFile(napi_env env, void *data) napi_value ConfigPolicyNapi::NativeGetOneCfgFileSync(napi_env env, std::shared_ptr context) { char outBuf[MAX_PATH_LEN] = {0}; - char *filePath = GetOneCfgFile(context->relPath_.c_str(), outBuf, MAX_PATH_LEN); - if (filePath == nullptr) { - HiLog::Info(LABEL, "GetOneCfgFile result is nullptr."); - } else { - context->pathValue_ = std::string(filePath); - } - ReportConfigPolicyEvent(ReportType::CONFIG_POLICY_EVENT, "getOneCfgFileSync", ""); - napi_value result = nullptr; - NAPI_CALL(env, napi_create_string_utf8(env, context->pathValue_.c_str(), NAPI_AUTO_LENGTH, &result)); - return result; -} - -napi_value ConfigPolicyNapi::NativeGetOneCfgFileEx(napi_env env, std::shared_ptr context) -{ - char outBuf[MAX_PATH_LEN] = {0}; - char *filePath = GetOneCfgFileEx(context->relPath_.c_str(), outBuf, MAX_PATH_LEN, context->followMode_, - context->extra_.c_str()); + char *filePath = GetOneCfgFileEx(context->relPath_.c_str(), outBuf, MAX_PATH_LEN, + context->followMode_, context->extra_.c_str()); if (filePath == nullptr) { HiLog::Info(LABEL, "GetOneCfgFileEx result is nullptr."); } else { context->pathValue_ = std::string(filePath); } - ReportConfigPolicyEvent(ReportType::CONFIG_POLICY_EVENT, "getOneCfgFileEx", ""); + ReportConfigPolicyEvent(ReportType::CONFIG_POLICY_EVENT, "getOneCfgFileSync", ""); napi_value result = nullptr; NAPI_CALL(env, napi_create_string_utf8(env, context->pathValue_.c_str(), NAPI_AUTO_LENGTH, &result)); return result; @@ -348,35 +332,24 @@ void ConfigPolicyNapi::NativeGetCfgFiles(napi_env env, void *data) } ConfigAsyncContext *asyncCallbackInfo = static_cast(data); - CfgFiles *cfgFiles = GetCfgFiles(asyncCallbackInfo->relPath_.c_str()); - for (size_t i = 0; i < MAX_CFG_POLICY_DIRS_CNT; i++) { - if (cfgFiles != nullptr && cfgFiles->paths[i] != nullptr) { - asyncCallbackInfo->paths_.push_back(cfgFiles->paths[i]); - } - } - FreeCfgFiles(cfgFiles); - CreateArraysValueFunc(*asyncCallbackInfo); - ReportConfigPolicyEvent(ReportType::CONFIG_POLICY_EVENT, "getCfgFiles", ""); -} - -napi_value ConfigPolicyNapi::NativeGetCfgFilesSync(napi_env env, std::shared_ptr context) -{ - CfgFiles *cfgFiles = GetCfgFiles(context->relPath_.c_str()); + CfgFiles *cfgFiles = GetCfgFilesEx(asyncCallbackInfo->relPath_.c_str(), asyncCallbackInfo->followMode_, + asyncCallbackInfo->extra_.c_str()); if (cfgFiles != nullptr) { for (size_t i = 0; i < MAX_CFG_POLICY_DIRS_CNT; i++) { if (cfgFiles->paths[i] != nullptr) { - context->paths_.push_back(cfgFiles->paths[i]); + asyncCallbackInfo->paths_.push_back(cfgFiles->paths[i]); } } FreeCfgFiles(cfgFiles); } - ReportConfigPolicyEvent(ReportType::CONFIG_POLICY_EVENT, "getCfgFilesSync", ""); - return CreateArraysValue(env, context); + CreateArraysValueFunc(*asyncCallbackInfo); + ReportConfigPolicyEvent(ReportType::CONFIG_POLICY_EVENT, "getCfgFiles", ""); } -napi_value ConfigPolicyNapi::NativeGetCfgFilesEx(napi_env env, std::shared_ptr context) +napi_value ConfigPolicyNapi::NativeGetCfgFilesSync(napi_env env, std::shared_ptr context) { - CfgFiles *cfgFiles = GetCfgFilesEx(context->relPath_.c_str(), context->followMode_, context->extra_.c_str()); + CfgFiles *cfgFiles = GetCfgFilesEx(context->relPath_.c_str(), context->followMode_, + context->extra_.c_str()); if (cfgFiles != nullptr) { for (size_t i = 0; i < MAX_CFG_POLICY_DIRS_CNT; i++) { if (cfgFiles->paths[i] != nullptr) { @@ -385,7 +358,7 @@ napi_value ConfigPolicyNapi::NativeGetCfgFilesEx(napi_env env, std::shared_ptr Date: Fri, 20 Oct 2023 17:11:57 +0800 Subject: [PATCH 6/7] =?UTF-8?q?=E8=A7=84=E8=8C=83=E9=97=AE=E9=A2=98?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: xiekaiming --- interfaces/kits/js/src/config_policy_napi.cpp | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/interfaces/kits/js/src/config_policy_napi.cpp b/interfaces/kits/js/src/config_policy_napi.cpp index 9235fe2..f423d9e 100644 --- a/interfaces/kits/js/src/config_policy_napi.cpp +++ b/interfaces/kits/js/src/config_policy_napi.cpp @@ -130,7 +130,7 @@ napi_value ConfigPolicyNapi::GetOneCfgFileOrAllCfgFilesSync(napi_env env, napi_c return func(env, asyncContext); } -napi_value ConfigPolicyNapi::GetOneCfgFileOrAllCfgFiles(napi_env env, napi_callback_info info, +napi_value ConfigPolicyNapi::GetOneCfgFileOrAllCfgFiles(napi_env env, napi_callback_info info, const std::string &workName, napi_async_execute_callback execute) { size_t argc = ARGS_SIZE_FOUR; @@ -148,8 +148,7 @@ napi_value ConfigPolicyNapi::GetOneCfgFileOrAllCfgFiles(napi_env env, napi_callb return nullptr; } if (argc == ARGS_SIZE_TWO) { - bool matchFlag = MatchValueType(env, argv[ARR_INDEX_ONE], napi_function); - if (matchFlag) { + if (MatchValueType(env, argv[ARR_INDEX_ONE], napi_function)) { napi_create_reference(env, argv[ARR_INDEX_ONE], NAPI_RETURN_ONE, &asyncContext->callbackRef_); } else { if (ParseFollowMode(env, asyncContext->followMode_, argv[ARR_INDEX_ONE]) == nullptr) { @@ -166,8 +165,7 @@ napi_value ConfigPolicyNapi::GetOneCfgFileOrAllCfgFiles(napi_env env, napi_callb if (ParseFollowMode(env, asyncContext->followMode_, argv[ARR_INDEX_ONE]) == nullptr) { return nullptr; } - bool matchFlag = MatchValueType(env, argv[ARR_INDEX_TWO], napi_function); - if (matchFlag) { + if (MatchValueType(env, argv[ARR_INDEX_TWO], napi_function)) { if (asyncContext->followMode_ == FOLLOWX_MODE_USER_DEFINED) { return ThrowNapiError(env, PARAM_ERROR, "Parameter error. The followMode is USER_DEFINED, extra must be set."); @@ -185,9 +183,8 @@ napi_value ConfigPolicyNapi::GetOneCfgFileOrAllCfgFiles(napi_env env, napi_callb ParseExtra(env, asyncContext->extra_, argv[ARR_INDEX_TWO]) == nullptr) { return nullptr; } - bool matchFlag = MatchValueType(env, argv[ARR_INDEX_THREE], napi_function); - if (!matchFlag) { - return ThrowNapiError(env, PARAM_ERROR, "Parameter error. The second parameter must be Callback."); + if (!MatchValueType(env, argv[ARR_INDEX_THREE], napi_function)) { + return ThrowNapiError(env, PARAM_ERROR, "Parameter error. The fourth parameter must be Callback."); } napi_create_reference(env, argv[ARR_INDEX_THREE], NAPI_RETURN_ONE, &asyncContext->callbackRef_); } -- Gitee From 0a60ce6fea3038648711671f2153b9f52d5c0cd5 Mon Sep 17 00:00:00 2001 From: xiekaiming Date: Fri, 20 Oct 2023 18:17:50 +0800 Subject: [PATCH 7/7] =?UTF-8?q?=E8=A7=84=E8=8C=83=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: xiekaiming --- interfaces/kits/js/include/config_policy_napi.h | 2 +- interfaces/kits/js/src/config_policy_napi.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/interfaces/kits/js/include/config_policy_napi.h b/interfaces/kits/js/include/config_policy_napi.h index fb414ec..cf7d81b 100644 --- a/interfaces/kits/js/include/config_policy_napi.h +++ b/interfaces/kits/js/include/config_policy_napi.h @@ -59,7 +59,7 @@ private: static napi_value HandleAsyncWork(napi_env env, ConfigAsyncContext *context, std::string workName, napi_async_execute_callback execute, napi_async_complete_callback complete); static napi_value GetOneCfgFileOrAllCfgFilesSync(napi_env env, napi_callback_info info, NapiFunction func); - static napi_value GetOneCfgFileOrAllCfgFiles(napi_env env, napi_callback_info info, + static napi_value GetOneCfgFileOrAllCfgFiles(napi_env env, napi_callback_info info, const std::string &workName, napi_async_execute_callback execute); static bool MatchValueType(napi_env env, napi_value value, napi_valuetype targetType); static void NativeGetOneCfgFile(napi_env env, void *data); diff --git a/interfaces/kits/js/src/config_policy_napi.cpp b/interfaces/kits/js/src/config_policy_napi.cpp index f423d9e..6865155 100644 --- a/interfaces/kits/js/src/config_policy_napi.cpp +++ b/interfaces/kits/js/src/config_policy_napi.cpp @@ -155,7 +155,7 @@ napi_value ConfigPolicyNapi::GetOneCfgFileOrAllCfgFiles(napi_env env, napi_callb return nullptr; } if (asyncContext->followMode_ == FOLLOWX_MODE_USER_DEFINED) { - return ThrowNapiError(env, PARAM_ERROR, + return ThrowNapiError(env, PARAM_ERROR, "Parameter error. The followMode is USER_DEFINED, extra must be set."); } } -- Gitee