ascii-chat
Binary v0.15.83-53-gb711d8720
Library lib/v0.3.2-701-gb711d8720
Video chat in your terminal
Loading...
Searching...
No Matches
handlers.h
Go to the documentation of this file.
1
33
34#pragma once
35
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_webrtc_sdp)(const acip_webrtc_sdp_t *sdp, size_t total_len, void *ctx);
87
89 void (*on_webrtc_ice)(const acip_webrtc_ice_t *ice, size_t total_len, void *ctx);
90
92 void (*on_session_joined)(const acip_session_joined_t *joined, void *ctx);
93
95 void (*on_crypto_parameters)(packet_type_t type, const void *payload, size_t payload_len, void *ctx);
96
98 void (*on_crypto_key_exchange_init)(packet_type_t type, const void *payload, size_t payload_len, void *ctx);
99
101 void (*on_crypto_auth_challenge)(packet_type_t type, const void *payload, size_t payload_len, void *ctx);
102
104 void (*on_crypto_server_auth_resp)(packet_type_t type, const void *payload, size_t payload_len, void *ctx);
105
107 void (*on_crypto_auth_failed)(packet_type_t type, const void *payload, size_t payload_len, void *ctx);
108
110 void (*on_crypto_handshake_complete)(packet_type_t type, const void *payload, size_t payload_len, void *ctx);
111
113 void *app_ctx;
115
132 size_t payload_len, const acip_client_callbacks_t *callbacks);
133
134// =============================================================================
135// Server-Side Handler Callbacks
136// =============================================================================
137
144typedef struct {
146 void (*on_protocol_version)(const protocol_version_packet_t *version, void *client_ctx, void *app_ctx);
147
149 void (*on_image_frame)(const image_frame_packet_t *header, const void *pixel_data, size_t data_len, void *client_ctx,
150 void *app_ctx);
151
153 void (*on_image_frame_h264)(uint32_t width, uint32_t height, uint8_t flags, const void *data, size_t data_len,
154 void *client_ctx, void *app_ctx);
156 void (*on_image_frame_h265)(uint32_t width, uint32_t height, uint8_t flags, const void *h265_data, size_t data_len,
157 void *client_ctx, void *app_ctx);
158
160 void (*on_audio)(const void *audio_data, size_t audio_len, void *client_ctx, void *app_ctx);
161
163 void (*on_audio_batch)(const audio_batch_packet_t *header, const float *samples, size_t num_samples, void *client_ctx,
164 void *app_ctx);
165
167 void (*on_audio_opus)(const void *opus_data, size_t opus_len, void *client_ctx, void *app_ctx);
168
170 void (*on_audio_opus_batch)(const void *batch_data, size_t batch_len, void *client_ctx, void *app_ctx);
171
173 void (*on_client_join)(const void *join_data, size_t data_len, void *client_ctx, void *app_ctx);
174
176 void (*on_client_leave)(void *client_ctx, void *app_ctx);
177
179 void (*on_stream_start)(uint32_t stream_types, void *client_ctx, void *app_ctx);
180
182 void (*on_stream_stop)(uint32_t stream_types, void *client_ctx, void *app_ctx);
183
185 void (*on_capabilities)(const void *cap_data, size_t data_len, void *client_ctx, void *app_ctx);
186
188 void (*on_ping)(void *client_ctx, void *app_ctx);
189
191 void (*on_pong)(void *client_ctx, void *app_ctx);
192
194 void (*on_error)(const error_packet_t *header, const char *message, void *client_ctx, void *app_ctx);
195
197 void (*on_remote_log)(const remote_log_packet_t *header, const char *message, void *client_ctx, void *app_ctx);
198
200 void (*on_crypto_key_exchange_resp)(packet_type_t type, const void *payload, size_t payload_len, void *client_ctx,
201 void *app_ctx);
202
204 void (*on_crypto_auth_response)(packet_type_t type, const void *payload, size_t payload_len, void *client_ctx,
205 void *app_ctx);
206
208 void (*on_crypto_no_encryption)(packet_type_t type, const void *payload, size_t payload_len, void *client_ctx,
209 void *app_ctx);
210
212 void *app_ctx;
214
230 size_t payload_len, void *client_ctx,
231 const acip_server_callbacks_t *callbacks);
Synchronized per-thread pending error stacks and value snapshots. SET_ERRNO pushes,...
unsigned int height
Definition fft.c:23
unsigned int width
Definition fft.c:23
unsigned int uint32_t
Definition common.h:62
unsigned char uint8_t
Definition common.h:60
asciichat_error_t
Error and exit codes - unified status values (0-255).
Definition error_codes.h:44
acip_session_joined_t
Definition acds.h:479
acip_webrtc_ice_t
Definition acds.h:655
acip_webrtc_sdp_t
Definition acds.h:609
packet_type_t
Network protocol packet type enumeration.
Definition packet.h:301
struct acip_transport acip_transport_t
Forward declaration of ACIP transport.
Definition host.h:506
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.
Definition handlers.c:799
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)
Client-side packet handler callbacks.
Definition handlers.c:203
Transport abstraction layer for ACIP protocol.
ACIP protocol message structures and helpers.
Client-side packet handler callbacks.
Definition handlers.h:51
void(* on_clear_console)(void *ctx)
Called when server requests console clear.
Definition handlers.h:83
void(* on_session_joined)(const acip_session_joined_t *joined, void *ctx)
Called when ACDS session join response received (Phase 3 WebRTC integration).
Definition handlers.h:92
void(* on_webrtc_sdp)(const acip_webrtc_sdp_t *sdp, size_t total_len, void *ctx)
Called when WebRTC SDP offer/answer received.
Definition handlers.h:86
void(* on_error)(const error_packet_t *header, const char *message, void *ctx)
Called when error message received.
Definition handlers.h:71
void(* on_crypto_parameters)(packet_type_t type, const void *payload, size_t payload_len, void *ctx)
Called when server sends CRYPTO_PARAMETERS (algorithm negotiation).
Definition handlers.h:95
void(* on_crypto_handshake_complete)(packet_type_t type, const void *payload, size_t payload_len, void *ctx)
Called when server sends HANDSHAKE_COMPLETE (crypto handshake success).
Definition handlers.h:110
void(* on_crypto_auth_challenge)(packet_type_t type, const void *payload, size_t payload_len, void *ctx)
Called when server sends AUTH_CHALLENGE (crypto handshake).
Definition handlers.h:101
void(* on_audio_opus_batch)(const void *batch_data, size_t batch_len, void *ctx)
Called when Opus batch received from server.
Definition handlers.h:65
void(* on_ping)(void *ctx)
Called when ping received (should send pong).
Definition handlers.h:77
void(* on_crypto_key_exchange_init)(packet_type_t type, const void *payload, size_t payload_len, void *ctx)
Called when server sends KEY_EXCHANGE_INIT (crypto handshake).
Definition handlers.h:98
void(* on_pong)(void *ctx)
Called when pong received.
Definition handlers.h:80
void(* on_audio_batch)(const audio_batch_packet_t *header, const float *samples, size_t num_samples, void *ctx)
Called when audio batch received from server.
Definition handlers.h:59
void(* on_webrtc_ice)(const acip_webrtc_ice_t *ice, size_t total_len, void *ctx)
Called when WebRTC ICE candidate received.
Definition handlers.h:89
void(* on_audio_opus)(const void *opus_data, size_t opus_len, void *ctx)
Called when Opus audio received from server.
Definition handlers.h:62
void(* on_remote_log)(const remote_log_packet_t *header, const char *message, void *ctx)
Called when remote log received.
Definition handlers.h:74
void(* on_ascii_frame)(const ascii_frame_packet_t *header, const void *frame_data, size_t data_len, void *ctx)
Called when ASCII frame received from server.
Definition handlers.h:53
void(* on_crypto_server_auth_resp)(packet_type_t type, const void *payload, size_t payload_len, void *ctx)
Called when server sends SERVER_AUTH_RESP (crypto handshake mutual auth).
Definition handlers.h:104
void * app_ctx
Application context (passed to all callbacks).
Definition handlers.h:113
void(* on_server_state)(const server_state_packet_t *state, void *ctx)
Called when server state update received.
Definition handlers.h:68
void(* on_audio)(const void *audio_data, size_t audio_len, void *ctx)
Called when raw audio received from server.
Definition handlers.h:56
void(* on_crypto_auth_failed)(packet_type_t type, const void *payload, size_t payload_len, void *ctx)
Called when server sends AUTH_FAILED (crypto handshake failure).
Definition handlers.h:107
Server-side packet handler callbacks.
Definition handlers.h:144
void(* on_image_frame)(const image_frame_packet_t *header, const void *pixel_data, size_t data_len, void *client_ctx, void *app_ctx)
Called when client sends image frame.
Definition handlers.h:149
void(* on_crypto_auth_response)(packet_type_t type, const void *payload, size_t payload_len, void *client_ctx, void *app_ctx)
Called when client sends AUTH_RESPONSE (crypto handshake).
Definition handlers.h:204
void(* on_capabilities)(const void *cap_data, size_t data_len, void *client_ctx, void *app_ctx)
Called when client sends capabilities.
Definition handlers.h:185
void(* on_pong)(void *client_ctx, void *app_ctx)
Called when pong received from client.
Definition handlers.h:191
void * app_ctx
Application context (passed to all callbacks).
Definition handlers.h:212
void(* on_image_frame_h265)(uint32_t width, uint32_t height, uint8_t flags, const void *h265_data, size_t data_len, void *client_ctx, void *app_ctx)
Called when client sends H.265-encoded image frame.
Definition handlers.h:156
void(* on_image_frame_h264)(uint32_t width, uint32_t height, uint8_t flags, const void *data, size_t data_len, void *client_ctx, void *app_ctx)
Called when client sends H.264-encoded image frame.
Definition handlers.h:153
void(* on_stream_start)(uint32_t stream_types, void *client_ctx, void *app_ctx)
Called when client starts streaming.
Definition handlers.h:179
void(* on_crypto_no_encryption)(packet_type_t type, const void *payload, size_t payload_len, void *client_ctx, void *app_ctx)
Called when client sends NO_ENCRYPTION (crypto handshake rejection).
Definition handlers.h:208
void(* on_ping)(void *client_ctx, void *app_ctx)
Called when ping received (should send pong).
Definition handlers.h:188
void(* on_stream_stop)(uint32_t stream_types, void *client_ctx, void *app_ctx)
Called when client stops streaming.
Definition handlers.h:182
void(* on_client_leave)(void *client_ctx, void *app_ctx)
Called when client leaves.
Definition handlers.h:176
void(* on_remote_log)(const remote_log_packet_t *header, const char *message, void *client_ctx, void *app_ctx)
Called when remote log received from client.
Definition handlers.h:197
void(* on_error)(const error_packet_t *header, const char *message, void *client_ctx, void *app_ctx)
Called when error message received from client.
Definition handlers.h:194
void(* on_client_join)(const void *join_data, size_t data_len, void *client_ctx, void *app_ctx)
Called when client joins.
Definition handlers.h:173
void(* on_audio_opus_batch)(const void *batch_data, size_t batch_len, void *client_ctx, void *app_ctx)
Called when client sends Opus batch.
Definition handlers.h:170
void(* on_audio_batch)(const audio_batch_packet_t *header, const float *samples, size_t num_samples, void *client_ctx, void *app_ctx)
Called when client sends audio batch.
Definition handlers.h:163
void(* on_audio)(const void *audio_data, size_t audio_len, void *client_ctx, void *app_ctx)
Called when client sends raw audio.
Definition handlers.h:160
void(* on_protocol_version)(const protocol_version_packet_t *version, void *client_ctx, void *app_ctx)
Called when client sends protocol version.
Definition handlers.h:146
void(* on_audio_opus)(const void *opus_data, size_t opus_len, void *client_ctx, void *app_ctx)
Called when client sends Opus audio.
Definition handlers.h:167
void(* on_crypto_key_exchange_resp)(packet_type_t type, const void *payload, size_t payload_len, void *client_ctx, void *app_ctx)
Called when client sends KEY_EXCHANGE_RESP (crypto handshake).
Definition handlers.h:200
The wire metadata for one rendered ASCII frame. width and height describe the terminal grid,...
Definition packet.h:902
The metadata prefix for a batch of encoded audio samples. batch_count, total_samples,...
Definition packet.h:960
Error packet structure carrying error code and textual description.
Definition packet.h:767
Describes one compressed image sent through ACIP. width, height, and pixel_format tell the decoder ho...
Definition packet.h:931
Protocol version negotiation packet structure (Packet Type 1).
Definition packet.h:860
Remote log packet structure carrying log level and message text.
Definition packet.h:781
Server state packet structure.
Definition packet.h:746