ascii-chat 0.11.33
Video chat in your terminal
Loading...
Searching...
No Matches
participant.h
Go to the documentation of this file.
1
51#pragma once
52
53#include <stdbool.h>
54#include <stddef.h>
55#include <stdint.h>
57#include "session/settings.h"
58
59/* ============================================================================
60 * Session Participant Types
61 * ============================================================================ */
62
72
77typedef struct {
84 void (*on_connected)(session_participant_t *p, uint32_t client_id, void *user_data);
85
91 void (*on_disconnected)(session_participant_t *p, void *user_data);
92
99 void (*on_frame_received)(session_participant_t *p, const char *frame, void *user_data);
100
108 void (*on_audio_received)(session_participant_t *p, const float *samples, size_t count, void *user_data);
109
116 void (*on_settings_changed)(session_participant_t *p, const session_settings_t *settings, void *user_data);
117
125 void (*on_error)(session_participant_t *p, asciichat_error_t error, const char *message, void *user_data);
127
132typedef struct {
134 const char *address;
135
137 int port;
138
141
143 const char *password;
144
146 const char *server_key;
147
150
153
156
160
161/* ============================================================================
162 * Session Participant Lifecycle Functions
163 * @{
164 */
165
180
191
194/* ============================================================================
195 * Session Participant Connection Functions
196 * @{
197 */
198
213
225
234
243
246/* ============================================================================
247 * Session Participant Media Control Functions
248 * @{
249 */
250
261
269
278
290
298
307
310/* ============================================================================
311 * Session Participant Settings Functions
312 * @{
313 */
314
324
339
342/* ============================================================================
343 * Session Participant Media Capture Functions
344 * @{
345 */
346
366
377
397
408
417
420/* ============================================================================
421 * Session Participant Transport Functions (WebRTC Integration)
422 * @{
423 */
424
436
455
468
481
⚠️‼️ Comprehensive thread-local error context system for ascii-chat
unsigned int uint32_t
Definition common.h:58
asciichat_error_t
Error and exit codes - unified status values (0-255)
Definition error_codes.h:49
void session_participant_stop_video(session_participant_t *p)
Stop video capture and streaming.
bool session_participant_is_audio_active(session_participant_t *p)
Check if audio is streaming.
asciichat_error_t session_participant_connect(session_participant_t *p)
Connect to session server.
bool session_participant_is_video_active(session_participant_t *p)
Check if video is streaming.
void session_participant_stop_audio(session_participant_t *p)
Stop audio capture and streaming.
uint32_t session_participant_get_client_id(session_participant_t *p)
Get assigned client ID.
bool session_participant_has_transport(session_participant_t *p)
Check if participant has an active alternative transport.
acip_transport_t * session_participant_get_transport(session_participant_t *p)
Get the current transport for the participant.
asciichat_error_t session_participant_start_video_capture(session_participant_t *p)
Start video capture and transmission to host.
asciichat_error_t session_participant_request_settings(session_participant_t *p, const session_settings_t *settings)
Request session settings update (if permitted)
asciichat_error_t session_participant_start_video(session_participant_t *p)
Start video capture and streaming.
void session_participant_stop_video_capture(session_participant_t *p)
Stop video capture and transmission.
void session_participant_destroy(session_participant_t *p)
Destroy session participant and free resources.
socket_t session_participant_get_socket(session_participant_t *p)
Get the socket from a participant context.
session_participant_t * session_participant_create(const session_participant_config_t *config)
Create a new session participant.
void session_participant_stop_audio_capture(session_participant_t *p)
Stop audio capture and transmission.
asciichat_error_t session_participant_start_audio_capture(session_participant_t *p)
Start audio capture and transmission to host.
bool session_participant_is_connected(session_participant_t *p)
Check if participant is connected.
asciichat_error_t session_participant_set_transport(session_participant_t *p, acip_transport_t *transport)
Set an alternative transport for the participant.
void session_participant_disconnect(session_participant_t *p)
Disconnect from session server.
asciichat_error_t session_participant_get_settings(session_participant_t *p, session_settings_t *settings)
Get current session settings.
asciichat_error_t session_participant_start_audio(session_participant_t *p)
Start audio capture and streaming.
int socket_t
⚙️ Session settings serialization and synchronization
int frame
Definition splash.c:99
ClangTool/LibTooling compatibility shim for stdbool.h.
Transport instance structure.
Definition transport.h:214
Callback function prototypes for session participant events.
Definition participant.h:77
Configuration for session participant.
session_participant_callbacks_t callbacks
Event callbacks.
const char * address
Server address to connect to.
bool enable_video
Enable video capture and streaming.
const char * password
Password for server authentication (optional)
bool encryption_enabled
Enable encryption (default: true)
void * user_data
User-provided context pointer passed to callbacks.
const char * server_key
Expected server key for verification (optional)
bool enable_audio
Enable audio streaming.
int port
Server port (default: 27224)
Internal session participant structure.
Definition participant.c:45
session_settings_t settings
Current session settings.
Definition participant.c:92
void * user_data
User data for callbacks.
Definition participant.c:71
uint32_t client_id
Assigned client ID.
Definition participant.c:83
Session settings for transmission between peers.
Definition settings.h:77