box: export box_session_push to the public C API
API is different from box.session.push() - sync argument was removed. It will disappear from Lua API as well, because it just is not needed here. Session is omitted as well. Indeed, a user can't push to a foreign session, and the current session can be obtained inside box_session_push(). And anyway session is not in the public C API. Internally dump into iproto is done using obuf_dup(), just like tuple_to_obuf() does. obuf_alloc() would be a bad call here, because it wouldn't be able to split the pushed data into several obuf chunks, and would cause obuf fragmentation. Dump into plain text behaves just like a Lua push - it produces a YAML formatted text or Lua text depending on output format. But to turn MessagePack into YAML or Lua text an intermediate Lua representation is used, because there are no a MessagePack -> YAML and MessagePack -> Lua text translators yet. Closes #4734 @TarantoolBot document Title: box_session_push() C API There is a new function in the public C API: ```C int box_session_push(const char *data, const char *data_end); ``` It takes raw MessagePack, and behaves just like Lua `box.session.push()`.
Showing
- extra/exports 1 addition, 0 deletionsextra/exports
- src/box/box.cc 14 additions, 0 deletionssrc/box/box.cc
- src/box/box.h 14 additions, 0 deletionssrc/box/box.h
- src/box/call.c 41 additions, 3 deletionssrc/box/call.c
- src/box/lua/console.c 78 additions, 7 deletionssrc/box/lua/console.c
- src/box/port.h 15 additions, 0 deletionssrc/box/port.h
- test/box/function1.c 7 additions, 0 deletionstest/box/function1.c
- test/box/push.result 121 additions, 0 deletionstest/box/push.result
- test/box/push.test.lua 50 additions, 0 deletionstest/box/push.test.lua
Loading
Please register or sign in to comment