docs: correct member file protocol and media download contracts
This commit is contained in:
1 parent
be235e01aa
commit
88e930cc0a
3 files changed
+18
-9
No files matched your search
+11
-6
@@ -136,6 +136,7 @@ Windows удерживает родительские каталоги без SH
|
||||
9 RENAME: owner/path/target/version. Только внутри UID/группы, без замены
|
||||
существующего назначения. Активная загрузка в затрагиваемом пути — BUSY.
|
||||
10 REMOVE: owner/path/version. Файл или пустой каталог, без рекурсивного удаления.
|
||||
Непустой каталог возвращает DIRECTORY_NOT_EMPTY.
|
||||
|
||||
11 STREAM_WRITE: открытие потоковой загрузки; поля как BEGIN_WRITE,
|
||||
cursor — ненулевой ID потока. Ответ подтверждает готовность temp и конечный размер.
|
||||
@@ -164,8 +165,9 @@ Windows удерживает родительские каталоги без SH
|
||||
При закрытии/перезапуске router-канала его handles завершаются с IO_ERROR;
|
||||
байты разных эпох не смешиваются. Возобновление через новую эпоху пока не реализовано.
|
||||
|
||||
Статусы (0..13): OK, ACCESS_DENIED, NOT_FOUND, INVALID_PATH, INVALID_RANGE,
|
||||
EXISTS, BUSY, STALE, NO_SPACE, IO_ERROR, BAD_PACKET, HASH_MISMATCH, CANCELLED, TIMEOUT.
|
||||
Статусы (0..14): OK, ACCESS_DENIED, NOT_FOUND, INVALID_PATH, INVALID_RANGE,
|
||||
EXISTS, BUSY, STALE, NO_SPACE, IO_ERROR, BAD_PACKET, HASH_MISMATCH, CANCELLED, TIMEOUT,
|
||||
DIRECTORY_NOT_EMPTY.
|
||||
Мутации COMMIT/MKDIR/RENAME/REMOVE сохраняют успешный ответ на 120 секунд
|
||||
(64 квитанции); тот же request_id с другим содержимым — BAD_PACKET.
|
||||
COMMIT дополнительно узнаётся по upload UUID. При заполнении квитанций новая
|
||||
@@ -355,11 +357,14 @@ tests/test_member_files_network: настоящие A/B/M, подписанна
|
||||
Также проверяются чужая запись, виртуальный корень и подписанное удаление читателя.
|
||||
QUOTA проверяется на настоящем подписанном/зашифрованном канале; удалённый читатель не получает счётчики.
|
||||
test_services — stop/start общего чат-сервиса.
|
||||
Текущая диагностика выделена в категорию debug. Настройка для полного трасса:
|
||||
Диагностика файлового сервиса — категория media, маршрутизатора — etcp_route.
|
||||
Настройка для полного трасса этих модулей:
|
||||
[debug]
|
||||
debug=trace
|
||||
debug=debug показывает запрос/ответ, ACL, очереди, маршрут, ACK, crypto-решения,
|
||||
I/O, fd idle и состояние браузера. trace дополнительно показывает каждый
|
||||
media=trace
|
||||
etcp_route=trace
|
||||
media=debug показывает запрос/ответ, ACL, очереди файлового сервиса, I/O и fd idle.
|
||||
etcp_route=debug добавляет выбор маршрута, состояния канала и ретрансмиты.
|
||||
Уровень trace дополнительно показывает каждый
|
||||
read/write и передачу задач/завершений между дисковым потоком и uasync.
|
||||
stream progress раз в секунду показывает ID/направление, done/total, число блоков
|
||||
в кольце, активность I/O, причину ожидания и скорость B/s. Router логирует переходы
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
/* media_download — загрузка канального файла по media_index_result: QUERY держателей → блоки → проверка/сборка.
|
||||
* Состояние хранит inst->media_delivery; каждый подключённый держатель удерживается через CM handle.
|
||||
* Состояние хранит inst->md. При открытии подключения через conn_mgr загрузчик получает CM handle.
|
||||
* Найденный ETCP_CONN используется без нового handle; при отсутствии conn_mgr запрос отправляется best-effort без handle.
|
||||
* Старт копирует метаданные result; callbacks и обработчики — uasync-поток, файловая проверка — media_async.
|
||||
* Failover/таймер простоя ограничивают повторы; done сообщает результат, а не гарантирует доставку другим участникам. */
|
||||
#ifndef MEDIA_DOWNLOAD_H
|
||||
@@ -118,7 +119,8 @@ void md_dl_conn_cb(struct CONN_MGR_HANDLE* h, uint64_t node_id, uint64_t group_i
|
||||
|
||||
/* ── тестовые хуки (для детерминированных юнит-тестов с «фейковым» временем) ──
|
||||
* md_dl_check_stall — проверка простоя: возвращает 0 (активна) / -1 (провал, нужно finish).
|
||||
* md_dl_failover_block — фейловер одного блока на следующий держатель: 0 / -1 (попытки исчерпаны).
|
||||
* md_dl_failover_block — переход блока к следующему держателю: 0, включая DONE/FAILED и ожидание новых держателей;
|
||||
* -1 — исчерпаны попытки или не удалось начать запрос (лимит peers, ошибка conn_mgr_open).
|
||||
* md_dl_dump — дамп состояния загрузки в лог (DEBUG_CATEGORY_MEDIA). */
|
||||
int md_dl_check_stall(struct media_download* dl, uint64_t now_tb);
|
||||
int md_dl_failover_block(struct media_download* dl, int bi, uint64_t now_tb);
|
||||
|
||||
@@ -59,7 +59,9 @@ void member_files_gui_request(void* arg);
|
||||
struct mf_transfer_request {
|
||||
struct UTUN_INSTANCE* inst; // ядро с работающим чат-сервисом
|
||||
uint64_t id, group, server, owner; // ID операции (0=авто), CHAT-группа, storage-узел и UID владельца каталога
|
||||
uint64_t max_bytes; // 0 — без лимита; проверяется до открытия локального файла и передачи данных.
|
||||
// Дополнительный лимит размера; 0 — без него. Upload: после открытия источника, до хеширования;
|
||||
// download: по ответу STAT, до открытия локального temp и передачи данных.
|
||||
uint64_t max_bytes;
|
||||
int upload; // ненулевой — загрузить local на сервер, 0 — скачать remote
|
||||
uint8_t version[16]; // версия из STAT; нули при создании нового серверного файла
|
||||
char remote[MF_PATH_MAX + 1], local[MF_PATH_MAX + 1]; // путь в каталоге owner и локальный путь приложения
|
||||
|
||||
Reference in new issue
Block a user