diff --git a/services/include/param/sys_param.h b/services/include/param/sys_param.h index 06f420b34e88f31712aa7b4218ebc04c714742a7..25d01463d9331c94e67ea6bac7c161591aaa2c45 100644 --- a/services/include/param/sys_param.h +++ b/services/include/param/sys_param.h @@ -86,6 +86,7 @@ CachedHandle CachedParameterCreate(const char *name, const char *defValue); * */ const char *CachedParameterGet(CachedHandle handle); +const char *CachedParameterGetChanged(CachedHandle handle, int *changed); /** * 外部接口 diff --git a/services/loopevent/task/le_streamtask.c b/services/loopevent/task/le_streamtask.c index 47fc1ae064960b1697552e7d0a207264122af6ef..e18f87e87f81068ca09fc3502c114216464ede06 100644 --- a/services/loopevent/task/le_streamtask.c +++ b/services/loopevent/task/le_streamtask.c @@ -69,13 +69,13 @@ static LE_STATUS HandleRecvMsg_(const LoopHandle loopHandle, } } if (status != LE_SUCCESS) { - FreeBuffer(loopHandle, (StreamTask *)taskHandle, buffer); + FreeBuffer(loopHandle, NULL, buffer); return status; } if (recvMessage) { recvMessage(taskHandle, buffer->data, readLen); } - FreeBuffer(loopHandle, (StreamTask *)taskHandle, buffer); + FreeBuffer(loopHandle, NULL, buffer); return status; } diff --git a/services/param/base/param_base.c b/services/param/base/param_base.c index 26f043fc900b23509518467bf6dff82c18b5fb03..6f2a130cef7cd6154a88b46e635bf81c2a7020c3 100644 --- a/services/param/base/param_base.c +++ b/services/param/base/param_base.c @@ -710,7 +710,7 @@ CachedHandle CachedParameterCreate(const char *name, const char *defValue) return (CachedHandle)param; } -STATIC_INLINE const char *CachedParameterCheck(CachedParameter *param) +STATIC_INLINE const char *CachedParameterCheck(CachedParameter *param, int *changed) { if (param->dataIndex == 0) { // no change, do not to find @@ -737,7 +737,8 @@ STATIC_INLINE const char *CachedParameterCheck(CachedParameter *param) param->dataCommitId = dataCommitId; int ret = ReadParamValue_(entry, ¶m->dataCommitId, param->paramValue, &length); PARAM_CHECK(ret == 0, return NULL, "Failed to copy value %s", param->data); - PARAM_LOGI("CachedParameterCheck %u", param->dataCommitId); + PARAM_LOGV("CachedParameterCheck %u", param->dataCommitId); + *changed = 1; return param->paramValue; } @@ -745,7 +746,17 @@ const char *CachedParameterGet(CachedHandle handle) { CachedParameter *param = (CachedParameter *)handle; PARAM_CHECK(param != NULL, return NULL, "Invalid handle"); - return CachedParameterCheck(param); + int changed = 0; + return CachedParameterCheck(param, &changed); +} + +const char *CachedParameterGetChanged(CachedHandle handle, int *changed) +{ + CachedParameter *param = (CachedParameter *)handle; + PARAM_CHECK(param != NULL, return NULL, "Invalid handle"); + PARAM_CHECK(changed != NULL, return NULL, "Invalid changed"); + *changed = 0; + return CachedParameterCheck(param, changed); } void CachedParameterDestroy(CachedHandle handle) diff --git a/test/unittest/param/param_unittest.cpp b/test/unittest/param/param_unittest.cpp index 5f7241f0e4a078cfacb9c92e74f6605a3cde6245..344da300db0b61ee8c32a6ee675b345a649ef041 100644 --- a/test/unittest/param/param_unittest.cpp +++ b/test/unittest/param/param_unittest.cpp @@ -642,8 +642,10 @@ HWTEST_F(ParamUnitTest, TestParamCache, TestSize.Level0) EXPECT_EQ(strcmp(value, "false"), 0); ret = WriteParam(name, "2222222", &dataIndex, 0); EXPECT_EQ(ret, 0); - value = CachedParameterGet(cacheHandle3); + int valueChange = 0; + value = CachedParameterGetChanged(cacheHandle3, &valueChange); EXPECT_EQ(strcmp(value, "2222222"), 0); + EXPECT_EQ(valueChange, 1); CachedParameterDestroy(cacheHandle3); } #ifdef PARAM_SUPPORT_SELINUX