23 lines
1.8 KiB
C
23 lines
1.8 KiB
C
/* dm_schema — атомарное создание/обновление локальной схемы личных бесед.
|
|
* Сохраняет историю, счётчики, точные тела outbox и отпечатки удалённых сообщений.
|
|
* Изменения выполняются внутри savepoint в uasync-потоке; ошибка откатывает схему. */
|
|
#ifndef UTUN_DM_SCHEMA_H
|
|
#define UTUN_DM_SCHEMA_H
|
|
#include <stdint.h>
|
|
struct UTUN_INSTANCE;
|
|
|
|
/* 0/-1: создать схему и перенести существующие DEVICE-записи без переподписи. */
|
|
int dm_schema_init(struct UTUN_INSTANCE* inst);
|
|
/* 0/-1: создать mailbox pending/receipts без привязки к маршруту; сохранить имеющиеся записи.
|
|
* Вызывается dm_mailbox_init независимо от dm_core_init. */
|
|
int dm_mailbox_schema_init(struct UTUN_INSTANCE* inst);
|
|
/* Общая схема файлов endpoint/S/M и квитанций устройств; вызывается до media owners.
|
|
* Сохранённые DEVICE-файлы остаются, уникальность меняется с dir на author. 0/-1. */
|
|
int dm_media_schema_init(struct UTUN_INSTANCE* inst);
|
|
/* 0/-1: прочитать следующий seq автора. Резервирование выполняет take в той же
|
|
* транзакции, что запись сообщения; до commit тело нельзя передавать в сеть. */
|
|
int dm_sequence_next(struct UTUN_INSTANCE* inst, uint64_t* seq);
|
|
/* 0/-1: увеличить счётчик с seq-1 до seq. Вызывать внутри транзакции отправки. */
|
|
int dm_sequence_take(struct UTUN_INSTANCE* inst, uint64_t seq);
|
|
#endif
|