Files
utun2/src/dm/dm_schema.h
T

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