From: Cyrill Gorcunov <gorcunov@gmail.com> To: tml <tarantool-patches@freelists.org> Cc: Alexander Turenko <alexander.turenko@tarantool.org>, Konstantin Osipov <kostja@tarantool.org>, Kirill Yukhin <kyukhin@tarantool.org>, Cyrill Gorcunov <gorcunov@gmail.com> Subject: [tarantool-patches] [PATCH 5/5] box/console: Provide console.eos() api Date: Sat, 31 Aug 2019 00:48:08 +0300 [thread overview] Message-ID: <20190830214808.17422-6-gorcunov@gmail.com> (raw) In-Reply-To: <20190830214808.17422-1-gorcunov@gmail.com> The other modules would be able to find out which eos marker is currently active. For example when reading replies from remote server via text based console protocol. @TarantoolBot document Title: > require('console').eos() Returns a string with currently active end of string marker. @TarantoolBot document Title: > require('console').eos("") Sets end of string marker for appliable output modes. YAML output mode does not support eos change. For Lua mode it is possible to set eos to empty string (like in example above) or any other symbol. Note that default semicolon symbol is mandatory for remote text consoles thus if get zapped the read procedure from remote socket will not be possible and connection get stuck forever. Use this ability with extreme caution. Part-of #3834 --- src/box/lua/console.lua | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/box/lua/console.lua b/src/box/lua/console.lua index 203dc668c..67238283b 100644 --- a/src/box/lua/console.lua +++ b/src/box/lua/console.lua @@ -163,6 +163,21 @@ local function current_eos() return output_eos[d["fmt"]] end +local function console_eos(...) + if not ... then + return tostring(current_eos()) + end + -- We can't allow to change yaml eos format because + -- it is a part of encoding standart, thus permit + -- only for modes where it is safe. + local d = current_output() + if d["fmt"] == "lua" then + output_eos["lua"] = ... + else + error("console.eos(): is immutable for output " .. d["fmt"]) + end +end + -- -- Map output format into a "\set" command. local function output_cmd_string() @@ -780,6 +795,7 @@ package.loaded['console'] = { delimiter = delimiter; set_default_output = set_default_output; get_default_output = get_default_output; + eos = console_eos; ac = ac; connect = connect; listen = listen; -- 2.20.1
next prev parent reply other threads:[~2019-08-30 21:49 UTC|newest] Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top 2019-08-30 21:48 [tarantool-patches] [PATCH v2 0/5] box/console: Improve lua mode for remote console Cyrill Gorcunov 2019-08-30 21:48 ` [tarantool-patches] [PATCH 1/5] box/console: Add mapping for direct symbols Cyrill Gorcunov [not found] ` <20190903082351.GB9438@atlas> 2019-09-03 8:26 ` [tarantool-patches] " Cyrill Gorcunov [not found] ` <20190903082446.GC9438@atlas> 2019-09-03 8:28 ` Cyrill Gorcunov 2019-08-30 21:48 ` [tarantool-patches] [PATCH 2/5] box/console: Add explicit output EOS mapping Cyrill Gorcunov [not found] ` <20190903082725.GD9438@atlas> 2019-09-03 8:32 ` [tarantool-patches] " Cyrill Gorcunov 2019-08-30 21:48 ` [tarantool-patches] [PATCH 3/5] box/console: Refactor command handling Cyrill Gorcunov 2019-08-30 21:48 ` [tarantool-patches] [PATCH 4/5] box/console: Fix hang in remote console lua mode Cyrill Gorcunov [not found] ` <20190903190002.GC15611@atlas> 2019-09-03 19:18 ` [tarantool-patches] " Cyrill Gorcunov [not found] ` <20190904064657.GD30636@atlas> 2019-09-04 7:12 ` Cyrill Gorcunov 2019-08-30 21:48 ` Cyrill Gorcunov [this message] [not found] ` <20190903190057.GD15611@atlas> 2019-09-03 19:19 ` [tarantool-patches] Re: [PATCH 5/5] box/console: Provide console.eos() api Cyrill Gorcunov [not found] ` <20190904064725.GE30636@atlas> 2019-09-04 7:12 ` Cyrill Gorcunov
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=20190830214808.17422-6-gorcunov@gmail.com \ --to=gorcunov@gmail.com \ --cc=alexander.turenko@tarantool.org \ --cc=kostja@tarantool.org \ --cc=kyukhin@tarantool.org \ --cc=tarantool-patches@freelists.org \ --subject='Re: [tarantool-patches] [PATCH 5/5] box/console: Provide console.eos() api' \ /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