ascii-chat 0.11.33
Video chat in your terminal
Loading...
Searching...
No Matches
handlers.h
Go to the documentation of this file.
1
34#pragma once
35
36#include "../../network/acip/transport.h"
37#include "../../network/acip/messages.h"
38#include "../../asciichat_errno.h"
39#include <stddef.h>
40
41// =============================================================================
42// Client-Side Handler Callbacks
43// =============================================================================
44
51typedef struct {
53 void (*on_ascii_frame)(const ascii_frame_packet_t *header, const void *frame_data, size_t data_len, void *ctx);
54
56 void (*on_audio)(const void *audio_data, size_t audio_len, void *ctx);
57
59 void (*on_audio_batch)(const audio_batch_packet_t *header, const float *samples, size_t num_samples, void *ctx);
60
62 void (*on_audio_opus)(const void *opus_data, size_t opus_len, void *ctx);
63
65 void (*on_audio_opus_batch)(const void *batch_data, size_t batch_len, void *ctx);
66
68 void (*on_server_state)(const server_state_packet_t *state, void *ctx);
69
71 void (*on_error)(const error_packet_t *header, const char *message, void *ctx);
72
74 void (*on_remote_log)(const remote_log_packet_t *header, const char *message, void *ctx);
75
77 void (*on_ping)(void *ctx);
78
80 void (*on_pong)(void *ctx);
81
83 void (*on_clear_console)(void *ctx);
84
86 void (*on_crypto_rekey_request)(const void *payload, size_t payload_len, void *ctx);
87
89 void (*on_crypto_rekey_response)(const void *payload, size_t payload_len, void *ctx);
90
92 void (*on_webrtc_sdp)(const acip_webrtc_sdp_t *sdp, size_t total_len, void *ctx);
93
95 void (*on_webrtc_ice)(const acip_webrtc_ice_t *ice, size_t total_len, void *ctx);
96
98 void (*on_session_joined)(const acip_session_joined_t *joined, void *ctx);
99
101 void (*on_crypto_parameters)(packet_type_t type, const void *payload, size_t payload_len, void *ctx);
102
104 void (*on_crypto_key_exchange_init)(packet_type_t type, const void *payload, size_t payload_len, void *ctx);
105
107 void (*on_crypto_auth_challenge)(packet_type_t type, const void *payload, size_t payload_len, void *ctx);
108
110 void (*on_crypto_server_auth_resp)(packet_type_t type, const void *payload, size_t payload_len, void *ctx);
111
113 void (*on_crypto_auth_failed)(packet_type_t type, const void *payload, size_t payload_len, void *ctx);
114
116 void (*on_crypto_handshake_complete)(packet_type_t type, const void *payload, size_t payload_len, void *ctx);
117
119 void *app_ctx;
121
136 size_t payload_len, const acip_client_callbacks_t *callbacks);
137
138// =============================================================================
139// Server-Side Handler Callbacks
140// =============================================================================
141
148typedef struct {
150 void (*on_protocol_version)(const protocol_version_packet_t *version, void *client_ctx, void *app_ctx);
151
153 void (*on_image_frame)(const image_frame_packet_t *header, const void *pixel_data, size_t data_len, void *client_ctx,
154 void *app_ctx);
155
157 void (*on_image_frame_h265)(uint32_t width, uint32_t height, uint8_t flags, const void *h265_data, size_t data_len,
158 void *client_ctx, void *app_ctx);
159
161 void (*on_audio)(const void *audio_data, size_t audio_len, void *client_ctx, void *app_ctx);
162
164 void (*on_audio_batch)(const audio_batch_packet_t *header, const float *samples, size_t num_samples, void *client_ctx,
165 void *app_ctx);
166
168 void (*on_audio_opus)(const void *opus_data, size_t opus_len, void *client_ctx, void *app_ctx);
169
171 void (*on_audio_opus_batch)(const void *batch_data, size_t batch_len, void *client_ctx, void *app_ctx);
172
174 void (*on_client_join)(const void *join_data, size_t data_len, void *client_ctx, void *app_ctx);
175
177 void (*on_client_leave)(void *client_ctx, void *app_ctx);
178
180 void (*on_stream_start)(uint32_t stream_types, void *client_ctx, void *app_ctx);
181
183 void (*on_stream_stop)(uint32_t stream_types, void *client_ctx, void *app_ctx);
184
186 void (*on_capabilities)(const void *cap_data, size_t data_len, void *client_ctx, void *app_ctx);
187
189 void (*on_ping)(void *client_ctx, void *app_ctx);
190
192 void (*on_pong)(void *client_ctx, void *app_ctx);
193
195 void (*on_error)(const error_packet_t *header, const char *message, void *client_ctx, void *app_ctx);
196
198 void (*on_remote_log)(const remote_log_packet_t *header, const char *message, void *client_ctx, void *app_ctx);
199
201 void (*on_crypto_rekey_request)(const void *payload, size_t payload_len, void *client_ctx, void *app_ctx);
202
204 void (*on_crypto_rekey_response)(const void *payload, size_t payload_len, void *client_ctx, void *app_ctx);
205
207 void (*on_crypto_rekey_complete)(const void *payload, size_t payload_len, void *client_ctx, void *app_ctx);
208
210 void (*on_crypto_key_exchange_resp)(packet_type_t type, const void *payload, size_t payload_len, void *client_ctx,
211 void *app_ctx);
212
214 void (*on_crypto_auth_response)(packet_type_t type, const void *payload, size_t payload_len, void *client_ctx,
215 void *app_ctx);
216
218 void (*on_crypto_no_encryption)(packet_type_t type, const void *payload, size_t payload_len, void *client_ctx,
219 void *app_ctx);
220
222 void *app_ctx;
224
240 size_t payload_len, void *client_ctx,
241 const acip_server_callbacks_t *callbacks);
acip_session_joined_t
Definition acds.h:474
acip_webrtc_ice_t
Definition acds.h:650
acip_webrtc_sdp_t
Definition acds.h:604
unsigned int uint32_t
Definition common.h:58
unsigned char uint8_t
Definition common.h:56
asciichat_error_t
Error and exit codes - unified status values (0-255)
Definition error_codes.h:49
packet_type_t
Network protocol packet type enumeration.
Definition packet.h:286
asciichat_error_t acip_handle_server_packet(acip_transport_t *transport, packet_type_t type, const void *payload, size_t payload_len, void *client_ctx, const acip_server_callbacks_t *callbacks)
Handle incoming packet on server side.
asciichat_error_t acip_handle_client_packet(acip_transport_t *transport, packet_type_t type, const void *payload, size_t payload_len, const acip_client_callbacks_t *callbacks)
Handle incoming packet on client side.
Client-side packet handler callbacks.
Definition handlers.h:51
void * app_ctx
Application context (passed to all callbacks)
Definition handlers.h:119
Server-side packet handler callbacks.
Definition handlers.h:148
void * app_ctx
Application context (passed to all callbacks)
Definition handlers.h:222
Transport instance structure.
Definition transport.h:214
ASCII frame packet structure (Packet Type 2)
Definition packet.h:848
Audio batch packet structure (Packet Type 28)
Definition packet.h:904
Error packet structure carrying error code and textual description.
Definition packet.h:727
Image frame packet structure (Packet Type 3)
Definition packet.h:876
Protocol version negotiation packet structure (Packet Type 1)
Definition packet.h:818
Remote log packet structure carrying log level and message text.
Definition packet.h:741
Server state packet structure.
Definition packet.h:706