Files
Baradb/docs/ru/api-binary.md
T

1.8 KiB

API бинарного протокола

Низкоуровневый wire-протокол для высокопроизводительных клиентских соединений.

Формат сообщения

Все сообщения используют порядок байтов big-endian:

┌────────┬────────┬────────┬────────┬─────────────┐
│ Length │  Type  │  Seq   │ Status │   Payload   │
│ 4 bytes│ 1 byte │ 2 bytes│ 1 byte │  N bytes    │
└────────┴────────┴────────┴────────┴─────────────┘

Типы сообщений

Query (0x01)

let msg = makeQueryMessage(seq, "SELECT * FROM users")

Insert (0x02)

let msg = makeInsertMessage(seq, "users", data)

Update (0x03)

let msg = makeUpdateMessage(seq, "users", updates, where)

Delete (0x04)

let msg = makeDeleteMessage(seq, "users", where)

Ready (0x05)

let msg = makeReadyMessage(seq)

Error (0x06)

let msg = makeErrorMessage(seq, code, message)

Коды ответов

Код Имя Описание
0x00 OK Успех
0x01 ERROR Общая ошибка
0x02 AUTH_REQUIRED Требуется аутентификация
0x03 INVALID_QUERY Синтаксическая ошибка запроса
0x04 NOT_FOUND Ресурс не найден

Сериализация

import barabadb/protocol/wire

let bytes = serializeValue(Value(kind: vkString, strVal: "test"))
let value = deserializeValue(bytes)