You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
41 lines
1.9 KiB
41 lines
1.9 KiB
/* |
|
* dm_mailbox.h — очередь offline-сообщений на суперузлах |
|
* |
|
* Суперузел общей группы хранит непрозрачное подписанное тело и повторяет |
|
* доставку при появлении маршрута до получателя, независимо от отправителя. |
|
* Копия удаляется только по квитанции получателя после commit в dm_core. |
|
* Квитанция сохраняется отдельно для повторов PUT и доставки отправителю. |
|
* |
|
* Сервис ETCP_RT_ID_DM_MAILBOX (0x35); контрольные пакеты подписаны router. |
|
*/ |
|
|
|
#ifndef DM_MAILBOX_H |
|
#define DM_MAILBOX_H |
|
|
|
#include <stdint.h> |
|
#include <stddef.h> |
|
|
|
struct UTUN_INSTANCE; |
|
|
|
#ifdef __cplusplus |
|
extern "C" { |
|
#endif |
|
|
|
/* Жизненный цикл: init после chat_core_init, destroy перед chat_core_destroy. */ |
|
int dm_mailbox_init(struct UTUN_INSTANCE* inst); |
|
void dm_mailbox_destroy(struct UTUN_INSTANCE* inst); |
|
|
|
/* Поставить PUT выбранному доступному суперузлу общей с recipient группы. |
|
* 0 означает принятие router, хранение подтверждается отдельно на проводе. |
|
* До квитанции получателя источник сохраняет задачу в durable outbox. */ |
|
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); вызов только из uasync. */ |
|
void dm_mailbox_receipt(struct UTUN_INSTANCE* inst, const uint8_t* receipt); |
|
|
|
#ifdef __cplusplus |
|
} |
|
#endif |
|
#endif /* DM_MAILBOX_H */
|
|
|