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.
50 lines
2.5 KiB
50 lines
2.5 KiB
/* |
|
* 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 <stdint.h> |
|
#include <stddef.h> |
|
|
|
#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 */
|
|
|