docs(dm): complete mailbox and storage coordinator contracts
This commit is contained in:
1 parent
2fe024fbbb
commit
1cfafc43a4
2 files changed
+22
-6
No files matched your search
+11
-3
@@ -6,7 +6,13 @@
|
||||
* Копия удаляется только по квитанции получателя после commit в dm_core.
|
||||
* Квитанция сохраняется отдельно для повторов PUT и доставки отправителю.
|
||||
*
|
||||
* Сервис ETCP_RT_ID_DM_MAILBOX (0x35); контрольные пакеты подписаны router.
|
||||
* Роль S — supernode=yes в подписанных adm_tags общей CHAT-группы A/B; storage её не заменяет.
|
||||
* При PUT от A в одной транзакции фиксируются сообщение и, для file, задание dm_mailbox_media.
|
||||
* Сервис ETCP_RT_ID_DM_MAILBOX (0x35); все пакеты подписаны router, числа native-endian:
|
||||
* PUT=1 [recipient:8][message]; DELIVER=2 [message]; RECEIPT=3 [receipt:136]; STORED=4 [conv:8][seq:8].
|
||||
* STORED подтверждает запись на S, только подписанная B квитанция подтверждает доставку сообщения.
|
||||
* Текст не имеет TTL. Таймер 1с обрабатывает до 32 задач с retry_at через 5с.
|
||||
* Входные буферы заимствуются на время вызова; их копией в пакете/SQLite владеет соответствующий owner.
|
||||
*/
|
||||
|
||||
#ifndef DM_MAILBOX_H
|
||||
@@ -37,10 +43,12 @@ void dm_mailbox_destroy(struct UTUN_INSTANCE* inst);
|
||||
int dm_mailbox_put(struct UTUN_INSTANCE* inst, uint64_t recipient, uint64_t sender,
|
||||
const uint8_t* msg, size_t msg_len);
|
||||
|
||||
/* Передать точную квитанцию всем доступным суперузлам общей группы сторон.
|
||||
/* Попытаться передать точную квитанцию всем доступным суперузлам общих групп сторон.
|
||||
* receipt — DM_RECEIPT_SIZE байт (см. dm_core.h), проверяется подпись получателя.
|
||||
* Это попытка отправки текущим доступным S; собственную durable очередь пересылки вызов не создаёт.
|
||||
* Источник продолжает повторять PUT до получения этой квитанции. */
|
||||
* Источник продолжает повторять PUT до получения этой квитанции.
|
||||
* На S сохранение receipt и удаление точного pending атомарны; повтор PUT возвращает receipt.
|
||||
* Локальный S здесь пропускается; вызов нужен endpoint, а не для локального применения на S. */
|
||||
void dm_mailbox_receipt(struct UTUN_INSTANCE* inst, const uint8_t* receipt);
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
||||
Reference in new issue
Block a user