diff --git a/components/fskv/luat_fskv.c b/components/fskv/luat_fskv.c index 844cca5b1..c6b7e162d 100644 --- a/components/fskv/luat_fskv.c +++ b/components/fskv/luat_fskv.c @@ -102,18 +102,20 @@ int luat_fskv_size(const char* key, char buff[4]) { int luat_fskv_next(char* buff, size_t offset) { lfs_dir_t dir = {0}; struct lfs_info info = {0}; + // offset要+2, 因为前2个值是"."和".."两个dir + offset += 2; int ret = lfs_dir_open(&sfd_lfs->lfs, &dir, ""); - if (ret != LFS_ERR_OK) { + if (ret < 0) { LLOGW("lfs_dir_open ret %d", ret); return -1; } ret = lfs_dir_seek(&sfd_lfs->lfs, &dir, offset); - if (ret != LFS_ERR_OK) { + if (ret < 0) { lfs_dir_close(&sfd_lfs->lfs, &dir); return -2; } ret = lfs_dir_read(&sfd_lfs->lfs, &dir, &info); - if (ret != LFS_ERR_OK) { + if (ret <= 0) { lfs_dir_close(&sfd_lfs->lfs, &dir); return -3; } diff --git a/components/fskv/luat_lib_fskv.c b/components/fskv/luat_lib_fskv.c index 48a65128e..cf421cb3d 100644 --- a/components/fskv/luat_lib_fskv.c +++ b/components/fskv/luat_lib_fskv.c @@ -373,6 +373,7 @@ static int l_fskv_next(lua_State *L) { size_t *offset = lua_touserdata(L, 1); char buff[256] = {0}; int ret = luat_fskv_next(buff, *offset); + // LLOGD("fskv.next %d %d", *offset, ret); if (ret == 0) { lua_pushstring(L, buff); *offset = *offset + 1; diff --git a/demo/fdb/main.lua b/demo/fdb/main.lua index 26b6255f0..2b98df91f 100644 --- a/demo/fdb/main.lua +++ b/demo/fdb/main.lua @@ -54,10 +54,37 @@ sys.taskInit(function() local t = fdb.kv_get("my_bool") log.info("fdb", "my_bool", type(t), t) - while true do - sys.wait(100) + if fdb.kv_iter then + local iter = fdb.kv_iter() + if iter then + while 1 do + local k = fdb.kv_next(iter) + if not k then + log.info("fdb", "iter exit") + break + end + log.info("fdb", k, "value", fdb.kv_get(k)) + end + else + log.info("fdb", "iter is null") + end + else + log.info("fdb", "without iter") end + -- 压力测试 + local start = mcu.ticks() + local count = 1000 + while count > 0 do + -- sys.wait(10) + count = count - 1 + -- fdb.kv_set("BENT1", "--" .. os.date() .. "--") + -- fdb.kv_set("BENT2", "--" .. os.date() .. "--") + -- fdb.kv_set("BENT3", "--" .. os.date() .. "--") + -- fdb.kv_set("BENT4", "--" .. os.date() .. "--") + fdb.kv_get("my_bool") + end + log.info("fdb", (mcu.ticks() - start) / 1000) end) -- 用户代码已结束---------------------------------------------