Skip to content

Draft.Messaging.RU

Anton Kashcheev edited this page Sep 12, 2024 · 6 revisions

Протокол обмена (схема Ubjson)

Полезные ссылки:

База

Что точно должно быть в сообщении:

  1. Заголовок:
    1. Размер полезной нагрузки в байтах
    2. Контрольная сумма
  2. Полезная нагрузка

Схема сообщения

В С++-структурках:

template<typename HashSum, typename Payload>
struct Message
{
    std::int32_t size;
    HashSum hashsum;
    Payload payload;
};

В нотации Ubjson:

[[]
    [l][size]
    [H][I][?][<hashsum>]
    [{][<payload>][}]
[]]

HashSum

Контроль целостности байтовой последовательности полезной нагрузки.

Алгоритм хэширования?

Пока на примете есть вариант HMAC, но надо криптографию поднимать (приоритеты)

Payload

C++-структура:

template<typename Data>
struct PayloadBase
{
    const char *objectName;
    const char *methodName;
    Data data;
};

В нотации Ubjson:

[{]
    [i][6][object][S][i][?][<objectName>]
    [i][6][method][S][i][?][<methodName>]
    [i][4][data][{] ... [}]
[}]

или

[{]
    [i][6][object][S][i][?][<objectName>]
    [i][6][method][S][i][?][<methodName>]
    [i][4][data][[] ... []]
[}]

RPC

Clone this wiki locally