Обновлена 15 сентября 2026 г. в 08:55
box.iproto.send()
Доступно начиная с версии 2.11.0. Отправляет пакет IPROTO через сокет сессии с заданными заголовком и телом в формате MsgPack. Заголовок и тело содержат экспортированные константы IPROTO из подмодуля box.iproto(). Возможные форматы констант IPROTO:
- константа в нижнем регистре без префикса
IPROTO_(schema_version,request_type) - константа из соответствующего подпространства имен box.iproto (
box.iproto.SCHEMA_VERSION,box.iproto.REQUEST_TYPE)
Функция работает только для бинарных сессий. Подробности см. в box.session.type().
Параметры:
sid(number) — идентификатор IPROTO-сессии (см. box.session.id())header(table|string) — заголовок запроса, закодированный в MsgPackbody(table|string|nil) — тело запроса, закодированное в MsgPack
Возвращает
0 в случае успеха, иначе вызывается ошибка
Тип возвращаемого значения
number
Возможные ошибки:
ER_SESSION_CLOSED– сессия закрыта.ER_NO_SUCH_SESSION– сессия не существует.ER_MEMORY_ISSUE– достигнут лимит нехватки памяти.ER_WRONG_SESSION_TYPE– тип сессии не является бинарным.
Подробности см. в src/box/errcode.h.
Примеры:
Отправка пакета с использованием таблиц Lua и строковых констант IPROTO в качестве ключей:
box.iproto.send(box.session.id(),{ request_type = box.iproto.type.OK,sync = 10,schema_version = box.info.schema_version },{ data = 1 })
Отправка пакета с использованием таблиц Lua и числовых констант IPROTO:
box.iproto.send(box.session.id(),{ [box.iproto.key.REQUEST_TYPE] = box.iproto.type.OK,[box.iproto.key.SYNC] = 10,[box.iproto.key.SCHEMA_VERSION] = box.info.schema_version },{ [box.iproto.key.DATA] = 1 })
Отправка пакета, содержащего только заголовок:
box.iproto.send(box.session.id(),{ request_type = box.iproto.type.OK,sync = 10,schema_version = box.info.schema_version })