Document stream CHAT integration and signed member option format
This commit is contained in:
1 parent
5f9cb86ff0
commit
fa79b7d30c
2 files changed
+34
-6
No files matched your search
+27
-4
@@ -393,6 +393,14 @@ adm_tags — блок владельца, для самоуправляемых
|
||||
- stream_subscriptions: список (source_node_id, source_epoch), на которые узел локально подписан.
|
||||
Формат — совместимые с существующим плоским userinfo строковые значения; список кодируется однозначно,
|
||||
со строгим разбором 64-битных IDs без потери точности через JSON numbers.
|
||||
Зафиксированный формат:
|
||||
stream_source = "<source_epoch:16 lowercase hex>:<n:decimal>:<r:decimal>:<block_size:decimal>"
|
||||
stream_subscriptions = "<source_node_id:16 lowercase hex>:<source_epoch:16 lowercase hex>,..."
|
||||
Отсутствующая/пустая опция означает отсутствие активности. Подписки отсортированы по source_node_id, затем эпохе;
|
||||
нулевые IDs/эпохи, дубликаты, неверные разделители, ведущие нули decimal и переполнение отвергаются.
|
||||
Активная публикация требует записи собственной трансляции в stream_subscriptions.
|
||||
Максимум элементов списка — MS_USERINFO_MAX/34; фактически доступное число дополнительно ограничено
|
||||
размером всего JSON с именем, аватаркой и прочими сохранёнными опциями. Две stream-опции меняются атомарно.
|
||||
Источник включает свою трансляцию в собственные подписки.
|
||||
Список относится к трансляциям, а не к сетевым handles или выбранным upstream-поставщикам.
|
||||
|
||||
@@ -492,9 +500,21 @@ Stop/destroy выполняются по правилам ядра, вне callb
|
||||
./build.sh --no-gui -j4 и ./check.sh прошли: 143 passed, 0 failed, 0 skipped;
|
||||
отдельные proxy/full, burst и load также PASS. Лог: /tmp/stream-check.log.
|
||||
|
||||
[ ] Включение в жизненный цикл чат-сервиса:
|
||||
контекст модуля в UTUN_INSTANCE, публичные локальные подписки/публикация, события потребителя,
|
||||
stream_source/stream_subscriptions в блоке мембера, сохранение остальных userinfo и BGP-фильтр кандидатов.
|
||||
[+] Включение в жизненный цикл чат-сервиса — 11.10.2026:
|
||||
stream.c/h — контекст в UTUN_INSTANCE, локальные handles публикации/подписки, общий экземпляр и буфер.
|
||||
DATA/GAP/END/CLOSED доставляются отложенно через один callback экземпляра ядра;
|
||||
callback может закрывать handles, заимствованные данные живут до его возврата.
|
||||
stream_member.c/h — канонические опции, проверка подписанного профиля/ключа и членства,
|
||||
online-кандидаты только из живых BGP-путей этой CHAT-группы; мобильный источник допускается, relay исключается.
|
||||
chat_core_set_my_profile_options — атомарная замена опций с сохранением имени, аватарки и остальных userinfo.
|
||||
При старте снимаются оставшиеся после аварии собственные опции; смена эпохи/ключа или утрата членства отменяют подписку.
|
||||
Удаление группы и остановка CHAT отменяют таймеры/события, отсоединяют handles и освобождают буферы;
|
||||
detached handle остаётся во владении вызывающего до stream_close, общий UTUN/транспорт сохраняется.
|
||||
test_stream_service: четыре живых ядра, Merkle-обмен через ETCP, две группы, общий буфер двух владельцев,
|
||||
BGP withdraw с сохранённой опцией, смена эпохи, потеря своего членства, удаление канала, restart и отмена таймера.
|
||||
Проверены rollback размера/SQLite, FEC-доставка непрозрачных байтов и закрытие из DATA callback, DATA перед END.
|
||||
Тест прошёл, счётчик живых аллокаций после destroy вернулся к нулю. Лог: /tmp/stream-service-test-final.log.
|
||||
Найденная тестом утечка существующих BGP-путей исправлена: записи освобождаются до контейнера node_paths.
|
||||
|
||||
[ ] Сетевая выдача:
|
||||
raw/router IDs, INFO и поколения сессий, 64-битные handles, SUBSCRIBE/RENEW/CLOSED,
|
||||
@@ -508,4 +528,7 @@ Stop/destroy выполняются по правилам ядра, вне callb
|
||||
пути/защита от циклов, стартовые 32 пробы, дальнейший темп 1/с и полный цикл не чаще 30 с,
|
||||
постепенный перенос с перекрытием, failover, несколько источников и независимое закрытие на общем ETCP.
|
||||
|
||||
Текущие компоненты — основа модуля данных; сетевые bindings, Merkle-опции и вызовы из UTUN_INSTANCE ещё не подключены.
|
||||
Текущие компоненты включают основу данных, локальный API и Merkle/BGP-интеграцию в CHAT.
|
||||
Сетевая выдача DATA между stream-экземплярами ещё не подключена: test_stream_service передаёт блоки
|
||||
во внутренний dispatcher явно, а опции распространяет настоящим Merkle-обменом поверх ETCP.
|
||||
Следующий этап — raw/router bindings, отдельные NCD-владельцы и REVERSE_REQ, выдачи из кольца с handles/арендой.
|
||||
+7
-2
@@ -9,8 +9,13 @@
|
||||
подписанные FEC-блоки 1300 байт, общий буфер 32 МБ, относительные timestamp-метрики,
|
||||
источник с таймером 100 мс и категория stream. test_stream_core прошёл;
|
||||
./check.sh: 143 passed, 0 failed, 0 skipped; proxy/full, burst и load — PASS.
|
||||
Следующий этап — жизненный цикл CHAT и опции мембера через Merkle с фильтром BGP,
|
||||
затем NCD-выдачи/reverse, общий отправитель/перегрузка и оптимизация путей.
|
||||
11.10.2026 подключены жизненный цикл CHAT, локальные handles/API и события потребителя,
|
||||
атомарные опции мембера через Merkle, подписанные профили и BGP-фильтр кандидатов.
|
||||
test_stream_service прошёл на четырёх ядрах: две группы, смена эпохи/членства, restart,
|
||||
rollback профиля, закрытие из callback и нулевой остаток аллокаций после destroy.
|
||||
Лог: /tmp/stream-service-test-final.log. Исправлена выявленная утечка BGP node_paths при удалении узла.
|
||||
Следующий этап — сетевая выдача DATA: NCD/reverse, handles/аренда и курсоры кольца;
|
||||
затем общий отправитель/перегрузка и оптимизация путей.
|
||||
|
||||
[+] **test_reality_tls: коллизии порта слушателя** — 10.10.2026:
|
||||
В общем прогоне 140 passed, 1 failed: stcp_server_create не смог занять порт 34922, bind errno=98 (EADDRINUSE).
|
||||
|
||||
Reference in new issue
Block a user