From 71d3b017e6e6b6dd280b9e373f0c6759cadef113 Mon Sep 17 00:00:00 2001 From: evgeny Date: Thu, 22 Oct 2026 21:20:21 +0200 Subject: [PATCH] Clarify local media catalog seeding and channel cleanup contracts --- src/media_delivery/media_delivery.h | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/media_delivery/media_delivery.h b/src/media_delivery/media_delivery.h index 0874ed82..fd6f5099 100644 --- a/src/media_delivery/media_delivery.h +++ b/src/media_delivery/media_delivery.h @@ -35,7 +35,7 @@ struct UTUN_INSTANCE; struct media_super_peer { uint64_t peer_node_id; // Эти два поля подряд — 16-байтный ключ очереди. - uint64_t group_id; + uint64_t group_id; // CHAT-группа, отдельное владение даже при том же peer_node_id. struct media_pkt_sync_req request; // Неизменяемый запрос до успешного commit/отмены. struct media_pkt_sync_req response; // Один ожидающий выдачи запрос пира; ответы вычисляются из БД. uint64_t deadline_tb; // Дедлайн запроса, idle-сверки или повторного открытия CM. @@ -141,7 +141,8 @@ void media_delivery_stream_done(struct UTUN_INSTANCE* inst); // ── Анонсы доступности блоков ── /* Автор анонсирует свои блоки суперузлам CHAT-группы (HAVE_BLOCK), чтобы первый - * скачивающий мог найти держателя через QUERY. Вызывается после регистрации медиа. */ + * скачивающий мог найти держателя через QUERY. Вызывается после регистрации медиа. + * Собственные зарегистрированные блоки добавляются в локальный каталог и без удалённых суперузлов. */ void media_delivery_announce_media(struct UTUN_INSTANCE* inst, uint64_t group_id, const uint8_t* media_id, const uint8_t* block_ids, int num_blocks); @@ -159,7 +160,8 @@ void media_delivery_announce_local_blocks(struct UTUN_INSTANCE* inst); // ── Отмена работы канала ── /* Отменить всё активное, что связано с каналом (локальное удаление канала): - * загрузки с group_id, их relay-контексты и super_peers этой группы. */ + * загрузки с group_id, их relay-контексты и super_peers этой группы. + * Каталог группы и её RX-курсоры удаляются одной транзакцией; ошибка очистки логируется. */ void media_delivery_cancel_channel(struct UTUN_INSTANCE* inst, uint64_t group_id); /* Зарезервировать путь в общей базе перед любой подготовкой файла; NULL — занят/ошибка.