ascii-chat 0.6.0
Real-time terminal-based video chat with ASCII art conversion
Loading...
Searching...
No Matches
handlers.h
Go to the documentation of this file.
1
34#pragma once
35
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 *app_ctx;
103
118 size_t payload_len, const acip_client_callbacks_t *callbacks);
119
120// =============================================================================
121// Server-Side Handler Callbacks
122// =============================================================================
123
130typedef struct {
132 void (*on_protocol_version)(const protocol_version_packet_t *version, void *client_ctx, void *app_ctx);
133
135 void (*on_image_frame)(const image_frame_packet_t *header, const void *pixel_data, size_t data_len, void *client_ctx,
136 void *app_ctx);
137
139 void (*on_audio)(const void *audio_data, size_t audio_len, void *client_ctx, void *app_ctx);
140
142 void (*on_audio_batch)(const audio_batch_packet_t *header, const float *samples, size_t num_samples, void *client_ctx,
143 void *app_ctx);
144
146 void (*on_audio_opus)(const void *opus_data, size_t opus_len, void *client_ctx, void *app_ctx);
147
149 void (*on_audio_opus_batch)(const void *batch_data, size_t batch_len, void *client_ctx, void *app_ctx);
150
152 void (*on_client_join)(const void *join_data, size_t data_len, void *client_ctx, void *app_ctx);
153
155 void (*on_client_leave)(void *client_ctx, void *app_ctx);
156
158 void (*on_stream_start)(uint32_t stream_types, void *client_ctx, void *app_ctx);
159
161 void (*on_stream_stop)(uint32_t stream_types, void *client_ctx, void *app_ctx);
162
164 void (*on_capabilities)(const void *cap_data, size_t data_len, void *client_ctx, void *app_ctx);
165
167 void (*on_ping)(void *client_ctx, void *app_ctx);
168
170 void (*on_pong)(void *client_ctx, void *app_ctx);
171
173 void (*on_error)(const error_packet_t *header, const char *message, void *client_ctx, void *app_ctx);
174
176 void (*on_remote_log)(const remote_log_packet_t *header, const char *message, void *client_ctx, void *app_ctx);
177
179 void (*on_crypto_rekey_request)(const void *payload, size_t payload_len, void *client_ctx, void *app_ctx);
180
182 void (*on_crypto_rekey_response)(const void *payload, size_t payload_len, void *client_ctx, void *app_ctx);
183
185 void (*on_crypto_rekey_complete)(const void *payload, size_t payload_len, void *client_ctx, void *app_ctx);
186
188 void *app_ctx;
190
206 size_t payload_len, void *client_ctx,
207 const acip_server_callbacks_t *callbacks);
⚠️‼️ Error and/or exit() when things go bad.
acip_session_joined_t
acip_webrtc_ice_t
acip_webrtc_sdp_t
unsigned int uint32_t
Definition common.h:58
asciichat_error_t
Error and exit codes - unified status values (0-255)
Definition error_codes.h:46
packet_type_t
Network protocol packet type enumeration.
Definition packet.h:281
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:534
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.
Definition handlers.c:119
ACIP protocol message structures and helpers.
Client-side packet handler callbacks.
Definition handlers.h:51
void * app_ctx
Application context (passed to all callbacks)
Definition handlers.h:101
Server-side packet handler callbacks.
Definition handlers.h:130
void * app_ctx
Application context (passed to all callbacks)
Definition handlers.h:188
Transport instance structure.
Definition transport.h:169
ASCII frame packet structure (Packet Type 2)
Definition packet.h:740
Audio batch packet structure (Packet Type 28)
Definition packet.h:796
Error packet structure carrying error code and textual description.
Definition packet.h:619
Image frame packet structure (Packet Type 3)
Definition packet.h:768
Protocol version negotiation packet structure (Packet Type 1)
Definition packet.h:710
Remote log packet structure carrying log level and message text.
Definition packet.h:633
Server state packet structure.
Definition packet.h:598
Transport abstraction layer for ACIP protocol.