Align stream guide with session ownership and current audit status
This commit is contained in:
1 parent
27ed4c74ff
commit
840bc9a6b0
2 files changed
+11
-4
No files matched your search
+10
-3
@@ -1,7 +1,7 @@
|
||||
Модуль стриминга. Техническое задание, этап 1.
|
||||
|
||||
Статус аудита 26.10.2026: сверка завершена только для stream_proto.h,
|
||||
stream_block.h, stream_source.h и stream_media.h; остальные разделы проверены частично.
|
||||
Статус аудита 26.10.2026: сверка завершена для stream.h, stream_proto.h,
|
||||
stream_block.h, stream_source.h, stream_media.h и stream_optimizer.h; остальные разделы проверены частично.
|
||||
Расхождение допуска deleted устранено: stream_member_load читает принятый флаг
|
||||
в том же SELECT, что и профиль, и возвращает STREAM_ERR_NOT_MEMBER до crypto.
|
||||
Штатный test_stream_member проверяет подписи/версии, source/supplier/self,
|
||||
@@ -11,6 +11,9 @@ stream_block.h, stream_source.h и stream_media.h; остальные разде
|
||||
Дефект publisher_block устранён: помещающийся Opus уходит в отдельную аудиопачку,
|
||||
ожидающее видео получает следующий слот actor. Штатный test_stream_publisher
|
||||
проверяет 23 сценария границ, продвижения треков и OPENING/FIN; раздел 7 отчёта.
|
||||
При продолжении найден дефект expire_controls: ожидается длина INFO_REQ8 вместо9,
|
||||
поэтому просроченный запрос удаляется без закрытия его пробы. Аудит остановлен;
|
||||
реализация не исправлена, изолированное подтверждение и вариант исправления — раздел8 отчёта.
|
||||
|
||||
1. Цель и принятые решения
|
||||
|
||||
@@ -553,8 +556,12 @@ Stop/destroy выполняются по правилам ядра, вне callb
|
||||
stream.c/h — контекст в UTUN_INSTANCE, локальные handles публикации/подписки, общий экземпляр и буфер.
|
||||
DATA/GAP/END/CLOSED доставляются отложенно через один callback экземпляра ядра;
|
||||
callback может закрывать handles, заимствованные данные живут до его возврата.
|
||||
DATA/GAP/END используют общую позицию сессии и не повторяются для каждого raw handle;
|
||||
медиакурсоры отдельных handles независимы. Последний owner закрывает сессию;
|
||||
после FIN оставшиеся owners удерживают кольцо, publisher close без FIN отсоединяет их.
|
||||
stream_member.c/h — канонические опции, проверка подписанного профиля/ключа и членства,
|
||||
online-кандидаты только из живых BGP-путей этой CHAT-группы; мобильный источник допускается, relay исключается.
|
||||
online-кандидаты только из живых BGP-путей этой CHAT-группы; мобильный источник допускается,
|
||||
мобильный промежуточный поставщик требует подписанную роль supernode.
|
||||
chat_core_set_my_profile_options — атомарная замена опций с сохранением имени, аватарки и остальных userinfo.
|
||||
При старте снимаются оставшиеся после аварии собственные опции; смена эпохи/ключа или утрата членства отменяют подписку.
|
||||
Удаление группы и остановка CHAT отменяют таймеры/события, отсоединяют handles и освобождают буферы;
|
||||
|
||||
+1
-1
@@ -1,7 +1,7 @@
|
||||
/* stream — публикация и приём трансляций CHAT-группы с подписью источника и восстановлением потерь через Reed–Solomon.
|
||||
* Источник: publish_open → publish_write или publish_block → publish_finish → close.
|
||||
* Приём: subscribe_open для событий байтового потока либо media_open → media_read для аудио/видео; затем close.
|
||||
* Одна сессия/RS-кольцо на группу и источник; эпоха и режим выбора поставщиков общие для её handles.
|
||||
* Одна живая сессия/RS-кольцо на группу и источник; эпоха и режим выбора поставщиков общие для её handles.
|
||||
* Все вызовы — uasync-поток. Для открытия нужны запущенный чат, живая CHAT-группа и проверенный собственный мембер.
|
||||
* Коды результатов — STREAM_* из stream_proto.h; открываемый *out заранее NULL и не меняется при отказе. */
|
||||
|
||||
|
||||
Reference in new issue
Block a user