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.
49 lines
2.2 KiB
49 lines
2.2 KiB
/* |
|
* invite_build.h — сборка invite-ссылок utun:// (выбор узла + адреса) |
|
* |
|
* Общий модуль для всех GUI (desktop chatgui, Android, headless CLI). |
|
* Логика выбора «лучшего узла» перенесена из tools/chatgui-android/jni_bridge. |
|
* Работает в uasync-потоке, использует общий контекст g_cc. |
|
*/ |
|
#ifndef INVITE_BUILD_H |
|
#define INVITE_BUILD_H |
|
|
|
#include <stdint.h> |
|
#include <stddef.h> |
|
|
|
#ifdef __cplusplus |
|
extern "C" { |
|
#endif |
|
|
|
/* Собрать invite-ссылку для канала. |
|
* target_node_id = 0 → auto (лучший достижимый мембер, иначе self). |
|
* target_node_id != 0 → конкретный узел (должен быть достижимым мембером канала). |
|
* password = NULL → без пароля. |
|
* Возвращает 0 и заполняет out, либо -1 (детали в логе). */ |
|
int chat_invite_build_link(uint64_t channel_id, uint64_t target_node_id, |
|
const char* password, char* out, size_t out_size); |
|
|
|
/* Список достижимых узлов-кандидатов канала (включая self) — тот же фильтр, что в auto. |
|
* Возвращает количество (0..max_ids), либо -1. */ |
|
int chat_invite_candidate_nodes(uint64_t channel_id, uint64_t* out_ids, int max_ids); |
|
|
|
/* Авто-узел: лучший достижимый мембер, иначе self. Возвращает 0 и заполняет out_node_id, либо -1. */ |
|
int chat_invite_best_node(uint64_t channel_id, uint64_t* out_node_id); |
|
|
|
/* Трамплин для gui_bridge (arg = u_malloc(struct chat_invite_build_req)). |
|
* Результат: CHAT_EVT_INVITE_LINK_READY. */ |
|
struct chat_invite_build_req { |
|
char ch_id[64]; |
|
uint64_t target_node_id; /* 0 = auto */ |
|
char password[128]; |
|
}; |
|
void chat_invite_build_link_trampoline(void* arg); |
|
|
|
/* Трамплин (arg = u_strdup(ch_id)). Результат: CHAT_EVT_INVITE_CANDIDATES |
|
* (формат: [ch_id_len:1][ch_id][auto_node_id:8][count:2][node_id:8]*). */ |
|
void chat_invite_candidates_trampoline(void* arg); |
|
|
|
#ifdef __cplusplus |
|
} |
|
#endif |
|
#endif /* INVITE_BUILD_H */
|
|
|