From: Vladislav Shpilevoy <v.shpilevoy@tarantool.org> To: Alexander Turenko <alexander.turenko@tarantool.org> Cc: tarantool-patches@freelists.org Subject: [tarantool-patches] Re: [PATCH v2 1/4] app: serializers update now is reflected in Lua Date: Sat, 14 Sep 2019 00:32:30 +0200 [thread overview] Message-ID: <1777a651-fd19-71d4-1c38-ef712b102eb7@tarantool.org> (raw) In-Reply-To: <20190912232254.twdmkuiz23gicmp2@tkn_work_nb> Thanks for the review! On 13/09/2019 01:22, Alexander Turenko wrote: > LGTM. > > Small comments are below. > > WBR, Alexander Turenko. > >> src/lua/utils.c | 34 +++++++++++++++------------- >> test/app-tap/json.test.lua | 3 ++- >> test/app-tap/lua/serializer_test.lua | 13 +++++++++++ >> test/app-tap/msgpack.test.lua | 3 ++- > > It looks that it worth to add the test to test/app-tap/yaml.test.lua > too. The test is called 'test_depth' and YAML serializer does not check max depth. This is why I omitted it for YAML, deliberately. Next commits add here more depth-specific tests, and they will fail for YAML. >> 4 files changed, 35 insertions(+), 18 deletions(-) >> >> diff --git a/src/lua/utils.c b/src/lua/utils.c >> index 75efe0ed2..a082a2e5b 100644 >> --- a/src/lua/utils.c >> +++ b/src/lua/utils.c >> @@ -270,10 +270,8 @@ luaL_serializer_parse_option(struct lua_State *L, int i, >> struct luaL_serializer *cfg) > > Now the function pushes a value to a Lua stack, I think it worth to > update the doxygen-style comment. > I thought it is quite obvious, and the old comment was still valid. But ok: diff --git a/src/lua/utils.c b/src/lua/utils.c index a082a2e5b..6789a8477 100644 --- a/src/lua/utils.c +++ b/src/lua/utils.c @@ -258,7 +258,8 @@ luaL_serializer_create(struct luaL_serializer *cfg) } /** - * Configure one field in @a cfg. + * Configure one field in @a cfg. Value of the field is kept on + * Lua stack after this function, and should be popped manually. * @param L Lua stack. * @param i Index of option in OPTIONS[]. * @param cfg Serializer to inherit configuration. (I didn't describe it in @retval, because this C function does not return Lua values. It still returns the same - int pointer). >> /** >> - * @brief serializer.cfg{} Lua binding for serializers. >> - * serializer.cfg is a table that contains current configuration values from >> - * luaL_serializer structure. serializer.cfg has overriden __call() method >> - * to change configuration keys in internal userdata (like box.cfg{}). >> - * Please note that direct change in serializer.cfg.key will not affect >> - * internal state of userdata. > > The note is still actual, I would not remove it. The old comment is super overcomplicated and obvious I think. But ok: diff --git a/src/lua/utils.c b/src/lua/utils.c index 6789a8477..93e00d81f 100644 --- a/src/lua/utils.c +++ b/src/lua/utils.c @@ -302,9 +302,15 @@ luaL_serializer_parse_options(struct lua_State *L, } /** - * Serializer.cfg.__call implementation. Merge new parameters into - * both C structure of the serializer, and into its Lua table - * representation: serializer.cfg. + * @brief serializer.cfg{} Lua binding for serializers. + * serializer.cfg is a table that contains current configuration values from + * luaL_serializer structure. serializer.cfg has overriden __call() method + * to change configuration keys in internal userdata (like box.cfg{}). + * Please note that direct change in serializer.cfg.key will not affect + * internal state of userdata. Changes via cfg() are reflected in + * both Lua cfg table, and C serializer structure. + * @param L lua stack + * @return 0 */ static int luaL_serializer_cfg(struct lua_State *L) > > ( Sooner or later we should just do > https://github.com/tarantool/tarantool/issues/2867 ) > > Side note: I think that it is better to have one source of information > and have only a handle in Lua. Or maybe (if option(s) access cost is > matter) update the Lua table using some kind of triggers: if we'll > change an option from C, then the current implementation will fail to > track it. We could copy luaL_serializer to ffi.cdef so as Lua would be able to work with that structure directly. That looks like a piece of cake. > > Anyway, it is not a part of your issue. Just side thoughts. >
next prev parent reply other threads:[~2019-09-13 22:28 UTC|newest] Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top 2019-09-10 20:24 [tarantool-patches] [PATCH v2 0/4] Serializer bugs Vladislav Shpilevoy 2019-09-09 19:00 ` [tarantool-patches] [PATCH v2 1/4] app: serializers update now is reflected in Lua Vladislav Shpilevoy 2019-09-12 23:22 ` [tarantool-patches] " Alexander Turenko 2019-09-13 22:32 ` Vladislav Shpilevoy [this message] 2019-09-09 19:00 ` [tarantool-patches] [PATCH v2 2/4] msgpack: make msgpackffi use encode_max_depth option Vladislav Shpilevoy 2019-09-12 23:24 ` [tarantool-patches] " Alexander Turenko 2019-09-13 22:32 ` Vladislav Shpilevoy 2019-09-09 19:00 ` [tarantool-patches] [PATCH v2 3/4] tuple: use global msgpack serializer in Lua tuple Vladislav Shpilevoy 2019-09-12 23:27 ` [tarantool-patches] " Alexander Turenko 2019-09-13 22:32 ` Vladislav Shpilevoy 2019-09-09 19:00 ` [tarantool-patches] [PATCH v2 4/4] app: allow to raise an error on too nested tables Vladislav Shpilevoy 2019-09-12 23:32 ` [tarantool-patches] " Alexander Turenko 2019-09-13 22:32 ` Vladislav Shpilevoy 2019-09-10 20:25 ` [tarantool-patches] Re: [PATCH v2 0/4] Serializer bugs Vladislav Shpilevoy 2019-09-12 23:44 ` Alexander Turenko 2019-09-13 22:32 ` Vladislav Shpilevoy
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=1777a651-fd19-71d4-1c38-ef712b102eb7@tarantool.org \ --to=v.shpilevoy@tarantool.org \ --cc=alexander.turenko@tarantool.org \ --cc=tarantool-patches@freelists.org \ --subject='[tarantool-patches] Re: [PATCH v2 1/4] app: serializers update now is reflected in Lua' \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox