Tarantool CE/EE Documentation portal logo
Помощь

Подмодуль box.iproto

Начиная с версии 2.11.0.

Подмодуль box.iproto предназначен для работы с сетевой подсистемой Tarantool. Функциональность IPROTO можно расширять из Lua. С помощью этого подмодуля можно:

Константы IPROTO

Константы IPROTO в пространстве имен box.iproto записываются заглавными буквами без префикса IPROTO_. Константы разделены на несколько групп:

  • ключ RAFT. Пример: IPROTO_TERM. Каждая группа находится в соответствующем подпространстве имен без префикса. Например:
box.iproto.key.SYNC = 0x01-- ...box.iproto.type.SELECT = 1-- ...box.iproto.flag.COMMIT = 1-- ...box.iproto.ballot_key.VCLOCK = 2-- ...box.iproto.metadata_key.IS_NULLABLE = 3-- ...box.iproto.raft_key.TERM = 0-- ...

Возможности IPROTO

Подмодуль экспортирует:

В примере названия возможностей из набора box.iproto.protocol_features преобразуются в коды:

-- Features supported by the serverbox.iproto.protocol_features = {    streams = true,    transactions = true,    error_extension = true,    watchers = true,    pagination = true,}-- Convert the feature names into codesfeatures = {}for name in pairs(box.iproto.protocol_features) do    table.insert(features, box.iproto.feature[name])endreturn features -- [0, 1, 2, 3, 4]

Обработка неизвестных типов запросов IPROTO

У каждого IPROTO-запроса есть статический обработчик. То есть до версии 2.11.0 любой неизвестный запрос вызывал ошибку. Начиная с версии 2.11.0 добавлен новый тип запроса – IPROTO_UNKNOWN. Этот тип используется для переопределения обработчиков неизвестных типов запросов IPROTO. Подробнее см. функции box.iproto.override() и box_iproto_override.

Справочник по API

В таблице перечислены все доступные функции и данные подмодуля:

Имя

Назначение

box.iproto.key

Ключи запросов

box.iproto.type

Типы запросов

box.iproto.flag

Флаги из ключа IPROTO_FLAGS

box.iproto.ballot_key

Ключи из запросов IPROTO_BALLOT

box.iproto.metadata_key

Ключи, вложенные в ключ IPROTO_METADATA

box.iproto.raft

Ключи из запросов IPROTO_RAFT_

box.iproto.protocol_version

Текущая версия протокола IPROTO

box.iproto.protocol_features

Набор поддерживаемых возможностей протокола IPROTO

box.iproto.feature

Возможности протокола IPROTO

box.iproto.override()

Установка нового обработчика запросов IPROTO для заданного типа запроса

box.iproto.send()

Отправка IPROTO-пакета через сокет сессии