Files
utun2/src/chat/chat_local.h
T

35 lines
2.1 KiB
C

/* Адаптер LAN discovery: готовые invite-ссылки и подписанные адреса известных узлов, без запуска JOIN.
* Адреса подтверждаются nonce-ответом только при отсутствии прямого UP и BGP-путей во всех группах.
* Ключи берутся из registry/SQLite и не передаются в открытых объявлениях; NODEINFO не изменяется. */
#ifndef CHAT_LOCAL_H
#define CHAT_LOCAL_H
#include "../local_transport/local_transport.h"
#ifdef __cplusplus
extern "C" {
#endif
struct UTUN_INSTANCE;
/* Создать транспорт для desktop/mobile, подписать активность. Повтор и server — 0; ошибка — -1. */
int chat_local_start(struct UTUN_INSTANCE* inst);
/* Снять подписку и уничтожить транспорт чат-сервиса; NULL/repeat допустимы. */
void chat_local_stop(struct UTUN_INSTANCE* inst);
/* Применить local_invites_enabled/local_broadcasts_enabled из chat_setting без рестарта.
* При отсутствии транспорта ничего не делает. Возвращает 0/-1. */
int chat_local_apply_settings(struct UTUN_INSTANCE* inst);
/* Трамплины uasync. peers получает заимствованный inst; send освобождает u_malloc request. */
void chat_local_peers_trampoline(void* inst);
struct chat_local_send_request {
struct UTUN_INSTANCE* inst; // заимствованный instance, которому передаётся команда
uint64_t peer_id; // устройство из CHAT_EVT_LOCAL_DEVICES
uint64_t request_id; // ненулевой ID UI, возвращается LOCAL_DELIVERY
char link[LOCAL_TRANSPORT_DATA_MAX + 1]; // готовая зарегистрированная ссылка, завершается NUL
};
void chat_local_send_trampoline(void* request);
#ifdef __cplusplus
}
#endif
#endif