Tarantool CE/EE Documentation portal logo
Помощь
Обновлена 15 сентября 2026 г. в 08:55

box.iproto.send()

send(sid, header[, body])

Доступно начиная с версии 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) — заголовок запроса, закодированный в MsgPack
  • body (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 })