Files
utun2/doc/pm.txt
T

34 lines
3.4 KiB
Plaintext

Работа лички — требования и реализация
1. отдели логику лички от логики групповых чатов. не смешивай.
Работа лички. сообщения и медиа доставляется напрямую если узел доступен через bgp.
если недоступен - то pending сообщения сохраняются на суперузле и pending media сохраняется на каком-либо медиаузле, а суперузлу сообщается где хранится медиа.
при появлении пира суперузел организует доставку медиа до получателя. после успешной доставки медиа/сообщений они удаляются с промежуточных узлов.
время хранения медиафайлов на промежуточных узлах ограничено - 1 неделя по умолчанию (задачется в конфиге этих узлов).
для доставки медиа поднимаем линк (conn_mgr).
Контракты реализации проверены 27.10.2026: src/dm/ и doc/dm_arch.md.
«Напрямую» означает доставку endpoint через живой маршрут общей CHAT-группы,
в том числе с BGP-транзитом; физический линк между A и B не обязателен.
Беседа имеет собственные историю/seq/outbox и не создаёт отдельную TOPO_GROUP.
Общие с групповыми вложениями примитивы: media_async, шифрование потоков,
attachment_info, voice_file; DM не использует групповой HAVE_BLOCK и его хранилище.
S выбирается по подписанному adm_tags supernode=yes, M — storage=yes в общей группе A/B.
Роли независимы и могут совмещаться на одном узле. A сохраняет исходящую задачу
до подписанной квитанции B; STORED от S/M не означает доставку получателю.
Текстовая квитанция подтверждает commit сообщения, файловая — проверку ciphertext,
публикацию файла и сохранение результата. S повторяет удаление у M до DELETE_ACK
либо завершения подтверждённого срока назначения; сохраняются служебные tombstones.
На M настройки чата dm_media_ttl_sec=604800 и dm_media_storage_mb=1024 задают TTL
в секундах и квоту в МиБ. Повтор STORE не продлевает TTL; при нехватке квоты новое
размещение отклоняется, подтверждённая копия не вытесняется до срока.
Текстовые pending не имеют TTL. Истечение копии M не удаляет оригинал A и не мешает
B получить его после возвращения A; локальное удаление истории не отзывает копии S/M.
Подробные wire-форматы, жизненный цикл и проверки: doc/dm_arch.md и src/dm/*.h.