/* * chat_event.h — система нотификаций о событиях чата * * Производители (chat_core, chat_sync, ...) вызывают chat_event_post(). * Потребители (chatgui, headless, будущий HTTP API) регистрируют один обработчик. * * Без обработчика — данные логируются через DEBUG_DEBUG + log_dump. * Все вызовы — из uasync-потока. */ #ifndef CHAT_EVENT_H #define CHAT_EVENT_H #include #include #ifdef __cplusplus extern "C" { #endif /* Типы событий (совпадают с GUI_EVT_* в gui_bridge.h для прямой совместимости) */ #define CHAT_EVT_MSG_RECEIVED 1 /* [ch_id_len:1][ch_id:var][author_node_id:8] */ #define CHAT_EVT_CONNECT_RESULT 2 /* [node_id:8][result:4][channel_id:8] */ #define CHAT_EVT_NEW_PEER 3 /* [node_id:8] */ #define CHAT_EVT_CHANNEL_UPDATED 4 /* [ch_id_len:1][ch_id:var] */ #define CHAT_EVT_MEMBERS_CHANGED 5 /* [ch_id_len:1][ch_id:var] */ #define CHAT_EVT_MY_NODE_ID 6 /* [node_id:8] */ #define CHAT_EVT_AUTO_CONNECT_STATUS 7 /* [status:1][total_tried:2][node_count:2][success:2] */ #define CHAT_EVT_CHANNEL_PEERS_ONLINE 8 /* [ch_id_len:1][ch_id:var][online_count:2] */ #define CHAT_EVT_DB_READY 9 /* data: none */ #define CHAT_EVT_STATUS_REFRESH 10 /* data: status text */ #define CHAT_EVT_KEYS_GENERATED 11 /* [pub_hex:64] */ #define CHAT_EVT_SERVICE_STARTED 12 /* data: none */ #define CHAT_EVT_SERVICE_STOPPED 13 /* data: none */ #define CHAT_EVT_ATTACHMENT_DOWNLOADED 14 /* [ch_id_len:1][ch_id:var][msg_id:8] */ #define CHAT_EVT_DOWNLOAD_PROGRESS 15 /* [ch_id_len:1][ch_id:var][msg_id:8][blocks_done:4][num_blocks:4] */ #define CHAT_EVT_NODEINFO_UPDATED 16 /* [node_id:8][conn_presence:1][conn_up:1][best_rtt:2] */ #define CHAT_EVT_LINK_STATUS_CHANGED 17 /* [peer_id:8][link_id:1][state:1][status:1][links_up:1][initialized:1] */ #define CHAT_EVT_INVITE_RECEIVED 18 /* [ch_id_len:1][ch_id][name_len:1][name][inviter_node_id:8][inviter_name_len:1][inviter_name] */ #define CHAT_EVT_LOCAL_SOCKETS 19 /* JSON: [{"si":id,"nm":"...","ad":"...","po":port,"pt":"TCP|UDP","st":0|1|2,"lk":n},...] */ typedef void (*chat_event_handler_fn)(int type, const uint8_t* data, int len); void chat_event_set_handler(chat_event_handler_fn handler); void chat_event_post(int type, const uint8_t* data, int len); #ifdef __cplusplus } #endif #endif /* CHAT_EVENT_H */