ascii-chat 0.11.33
Video chat in your terminal
Loading...
Searching...
No Matches
app_callbacks.h
Go to the documentation of this file.
1
8#ifndef APP_CALLBACKS_H
9#define APP_CALLBACKS_H
10
11#include <stdbool.h>
12#include <stddef.h>
13#include <stdint.h>
17
18typedef struct {
19 // Exit signals
20 bool (*should_exit)(void);
21 void (*signal_exit)(void);
22
23 // Platform timing / wait helpers
25 void (*platform_sleep_ms)(unsigned int ms);
26 void (*platform_pump_events)(void);
27
28 // Server/client crypto setup
29 void (*server_connection_set_ip)(const char *ip);
30 void (*server_connection_set_port)(int port);
32 int (*client_crypto_init)(void);
35 const crypto_context_t *(*crypto_client_get_context)(void);
36
37 // Audio
38 void (*audio_stop_thread)(void);
40
44void app_callbacks_register(const app_callbacks_t *callbacks);
45
50
51/* ============================================================================
52 * Convenience Macros for Safe Callback Invocation
53 * ============================================================================ */
54
59#define APP_CALLBACK_VOID(callback_name) \
60 do { \
61 const app_callbacks_t *__cb = app_callbacks_get(); \
62 if (__cb && __cb->callback_name) { \
63 __cb->callback_name(); \
64 } \
65 } while (0)
66
71#define APP_CALLBACK_BOOL(callback_name) \
72 ({ \
73 const app_callbacks_t *__cb = app_callbacks_get(); \
74 (__cb && __cb->callback_name) ? __cb->callback_name() : false; \
75 })
76
81#define APP_CALLBACK_INT(callback_name) \
82 ({ \
83 const app_callbacks_t *__cb = app_callbacks_get(); \
84 (__cb && __cb->callback_name) ? __cb->callback_name() : -1; \
85 })
86
91#define APP_CALLBACK_UINT64(callback_name) \
92 ({ \
93 const app_callbacks_t *__cb = app_callbacks_get(); \
94 (__cb && __cb->callback_name) ? __cb->callback_name() : 0ULL; \
95 })
96
101#define APP_CALLBACK_INT_TRANSPORT(callback_name, transport) \
102 ({ \
103 const app_callbacks_t *__cb = app_callbacks_get(); \
104 (__cb && __cb->callback_name) ? __cb->callback_name(transport) : -1; \
105 })
106
111#define APP_CALLBACK_VOID_UINT8(callback_name, value) \
112 do { \
113 const app_callbacks_t *__cb = app_callbacks_get(); \
114 if (__cb && __cb->callback_name) { \
115 __cb->callback_name(value); \
116 } \
117 } while (0)
118
123#define APP_CALLBACK_VOID_UINT(callback_name, value) \
124 do { \
125 const app_callbacks_t *__cb = app_callbacks_get(); \
126 if (__cb && __cb->callback_name) { \
127 __cb->callback_name(value); \
128 } \
129 } while (0)
130
135#define APP_CALLBACK_VOID_STR(callback_name, value) \
136 do { \
137 const app_callbacks_t *__cb = app_callbacks_get(); \
138 if (__cb && __cb->callback_name) { \
139 __cb->callback_name(value); \
140 } \
141 } while (0)
142
147#define APP_CALLBACK_VOID_INT(callback_name, value) \
148 do { \
149 const app_callbacks_t *__cb = app_callbacks_get(); \
150 if (__cb && __cb->callback_name) { \
151 __cb->callback_name(value); \
152 } \
153 } while (0)
154
159#define APP_CALLBACK_PTR(callback_name) \
160 ({ \
161 const app_callbacks_t *__cb = app_callbacks_get(); \
162 (__cb && __cb->callback_name) ? __cb->callback_name() : NULL; \
163 })
164
165#endif
const app_callbacks_t * app_callbacks_get(void)
void app_callbacks_register(const app_callbacks_t *callbacks)
void audio_stop_thread()
Stop audio capture thread.
void server_connection_set_ip(const char *ip)
Set the server IP address.
void server_connection_set_port(int port)
Set the server port.
int client_crypto_handshake(acip_transport_t *transport)
Perform crypto handshake with server.
void client_crypto_set_mode(uint8_t mode)
Set crypto mode for handshake (encryption + authentication)
int client_crypto_init(void)
Initialize client crypto handshake.
bool crypto_client_is_ready(void)
Check if crypto handshake is ready.
unsigned long long uint64_t
Definition common.h:59
unsigned char uint8_t
Definition common.h:56
uint64_t platform_get_monotonic_time_us(void)
Get monotonic time in microseconds.
void platform_sleep_ms(unsigned int ms)
Sleep for a specified number of milliseconds.
void signal_exit(void)
Definition misc.c:129
bool should_exit(void)
Definition misc.c:131
Cross-platform socket interface for ascii-chat.
ClangTool/LibTooling compatibility shim for stdbool.h.
#define bool
Definition stdbool.h:61
Transport instance structure.
Definition transport.h:214
Cryptographic context structure.