215 похожих чатов

Всем привет. Я снова с вопросом об API для box.session.push,

а именно о его клиентской части - netbox коннекторе. Тикет: https://github.com/tarantool/tarantool/issues/2677. С прошлым обсуждением было решено, что в нетбокс запросе можно будет в опциях указать on_push колбек вот так:
c:call('function', {args}, {on_push = my_callback})

1. Но что делать, если on_push не указан - игнорировать сообщения? Или пытаться их как-то вернуть? Если нужно вернуть, то тут проблема - метод нетбокса (call, replace, insert ...) в таком случае будет возвращать то только результат вызова, как сейчас, то результат вызова + сообщения. И это не совместимо с netbox.call - он уже итак возвращает произвольное число значений, прямо как вызванная им функция. Я за то, чтобы в таком случае сообщения игнорировать. Готов выслушать другие мнения.

2. Недавно был пушнут асинхронный нетбокс - это когда с любым запросом можно передать флаг is_async, и он моментально вернет объект future вместо блокирования файбера. Потом по этому future можно получить результат. Как подружить это с пушами? Продолжать передавать коллбек? Или может тогда запретить его, и сделать, что future становится итерируемым объектом? То есть либо on_push ~= nil, либо is_async = true, либо ни того, ни другого.
Например:
future = netbox.call('function', {args}, {is_async = true})
for i, msg in pairs(future) do
-- process message ...
end

4 ответов

17 просмотров
Vladislav-Shpilevoy Автор вопроса

UP

Vladislav-Shpilevoy Автор вопроса

UP

Vladislav-Shpilevoy Автор вопроса

UP

по поводу этого: 1) пуши, которые не зарегистрированы будут удаляться, нет? то есть сервер может прислать сообщение которое мы не ожидаем и обрабатывать надо только те, с каким sync'ом они зарегистрированы. кажется игнорирование/глобальный коллбек (на незарегистрированые пуши) - может логичный вариант 2) имхо :wait() должен возвращать первый же объект в очереди (с возможностью висеть неограниченое кол-во раз, можно назвать это :wait_next(), в противовес :wait() который будет возвращать все полученные по этому синку сообщения), а при GC объекта future это-вот все пропадает. второе поведение с коллбеками - оно будет до бесконечности висеть и ждать разных сообщений по данному соединению с данным синком BTW: pairs(future) работать не будет, в LuaJIT без COMPAT52 не будет работать __pairs и __ipairs метод (разве что сам объект future будет без полей)

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта