Size: a a a

2021 July 02

AS

Andrey Syvrachev in Tarantool
О - пока первый вариант, фиг с ним. Попробую с копированием. Но я кажется понял, что надо на уровне Си просто http прикрутить и все
источник

VG

Vladislav Grubov in Tarantool
это будет проще, да
источник

AS

Andrey Syvrachev in Tarantool
ffi.string(ffi.gc(dvr.get_segment(0), dvr.finalizer )),
а так можно ?
источник

N

Nobody in Tarantool
Сами управляете. В Lua 5.1 (= tarantool) при этом __gc не работает на (light)userdata. Высовободить можно либо создав обьект-таблицу с __gc, либо создав свою функцию на C
источник

VG

Vladislav Grubov in Tarantool
да, но вызов ffi.string скопирует из char * в луа гц
источник

VG

Vladislav Grubov in Tarantool
нужно еще внутренности до ответа клиенту донести, там сериализация, на userdata можно вешать метаметоды, в частности __serialize, не уверен, что это работает для lightuserdata
источник

AS

Andrey Syvrachev in Tarantool
Спасибо за ответы. Сейчас попробую вараинт с ff.string
источник

N

Nobody in Tarantool
Только если __serialize на таблицу и писать на С
источник

AS

Andrey Syvrachev in Tarantool
Только я не понял а размер строчки как задать?
источник

VG

Vladislav Grubov in Tarantool
__serialize на юзердату тоже можно, через debug.setmetatable
источник

VG

Vladislav Grubov in Tarantool
2м параметром: ffi.string(char_star, length), по-умолчанию до 0-байта
источник

N

Nobody in Tarantool
Метатаблицы на userdata не работают. Уже головой в это стучался
источник

AS

Andrey Syvrachev in Tarantool
а если длина указана и в буфере есть нулевые байты? То она на них не среагирует и будет по длине ориентироваться??
источник

N

Nobody in Tarantool
В С? lua_setlstring или как там оно. Есть функция с указанием длинны
источник

VG

Vladislav Grubov in Tarantool
источник

AS

Andrey Syvrachev in Tarantool
Вообщем чтобы на ffi.string не морочится на lua уровне, можно на Си сделать?
это вроде проще. И она автоматом будет GC ?
источник

N

Nobody in Tarantool
Повезло) newproxy - какого типа?
источник

N

Nobody in Tarantool
Только userdata, не lightuserdata
источник

AS

Andrey Syvrachev in Tarantool
lua_pushlstring - c указанием длины выделит строчку с игнорированием нулей, и LUA сам ее удалит когда GC решит так я понял?
источник

N

Nobody in Tarantool
Да. Ей вообще по барабану, что внутри
источник