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 ответов

13 просмотров
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 будет без полей)

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

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

Добрый вечер. Есть вопрос, а может и предложение. Был у меня диалог в другой группе о делфи и я задался вопросом: "А нельзя ли в делфи цвет //коментария и {комментария} сде...
Kraszx
24
Всем привет! Подскажи, пожалуйста, как передать в TComboBox сразу значение и id записи. На Delphi я делал так: ComboBox1.Items.AddObject('Какое-то значение', Pointer(id запис...
Евгений
13
Мдя, прикол, боевая сборка запускается (именно под отладчиком) после F9 примерно полторы минуты (97 секунд если быть точным). Начал копать - проблема детектится сразу - зависа...
Александр (Rouse_) Багель
38
Здравствуйте, вопрос по структурам данных. Были у вас случаи, когда пришлось писать деревья или двунаправленные списки?
/ /
50
Товарищи, кто работа с iphelper? Или может я в самой логике ошибки фигачу, не пойму.... var ifTable : PMIB_IFTABLE; size, corSize: DWORD; Buffer ...
Warfarellen
4
я так понимаю, я так подозреваю, что создание такого плагина для человека, кто умеет писать плагины для делфи потребует минут 5-10 времени. но это мое подозрение. хотелось бы ...
Kraszx
7
Коллеги, добрый вечер. Создаю коллекцию от TFPGMap, ключ - перечисление, значение - целое. Нужно отсортировать коллекцию по значению. Как это можно сделать?
Kirill Filippenok
11
Скажи а ты когда этот канал создавал ты уже дельфи не любил, или это со временем пришло?
Роман Лях (rgreat)
18
Ребята, всем привет. Подскажите, пожалуйста, можно ли как-то через бота понять, что этого бота добавили в группу\канал и выдали ему права администратора?
Artem Stormageddon
9
Привет, такой вопросик появился кажется ли вам что Rust слишком сложный/строгий для высокоуровневого программирования и слишком "безопасный"/строгий для низкоуровневого?
Крокант
10
Карта сайта