ascii-chat
Binary v0.15.83-53-gb711d8720
Library lib/v0.3.2-701-gb711d8720
Video chat in your terminal
Loading...
Searching...
No Matches
peer_manager.h
Go to the documentation of this file.
1
29
30#pragma once
31
33#include <stdint.h>
34#include <stdbool.h>
35#include "../../common.h"
39
40#ifdef __cplusplus
41extern "C" {
42#endif
43
51
52// Forward declarations
54
62
76 const uint8_t participant_id[SESSION_ID_SIZE], void *user_data);
77
90 uint64_t elapsed_ms, void *user_data);
91
109
122 const uint8_t recipient_id[SESSION_ID_SIZE],
123 const char *sdp_type, const char *sdp, void *user_data);
124
137 const uint8_t recipient_id[SESSION_ID_SIZE],
138 const char *candidate, const char *mid, void *user_data);
139
148
149// ============================================================================
150// Peer Manager Lifecycle
151// ============================================================================
152
167 const webrtc_signaling_callbacks_t *signaling_callbacks,
168 webrtc_peer_manager_t **manager_out);
169
178
179// ============================================================================
180// Signaling Message Processing
181// ============================================================================
182
196
207
208// ============================================================================
209// Connection Initiation (Joiner Role)
210// ============================================================================
211
226
229 webrtc_state_t *state_out);
232
233// ============================================================================
234// Connection Health Monitoring
235// ============================================================================
236
254
259 // end of webrtc_peer_manager group
261
262#ifdef __cplusplus
263}
264#endif
⚙️ Common definitions, error codes, macros, and types shared throughout the application
unsigned int uint32_t
Definition common.h:62
unsigned long long uint64_t
Definition common.h:63
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
#define SESSION_ID_SIZE
acip_webrtc_ice_t
Definition acds.h:655
acip_webrtc_sdp_t
Definition acds.h:609
struct acip_transport acip_transport_t
Forward declaration of ACIP transport.
Definition host.h:506
stun_server_t
Definition stun.h:78
turn_server_t
Definition turn.h:106
bool webrtc_peer_manager_get_state(webrtc_peer_manager_t *manager, const uint8_t participant_id[16], webrtc_state_t *state_out)
asciichat_error_t webrtc_peer_manager_remove_peer(webrtc_peer_manager_t *manager, const uint8_t participant_id[16])
asciichat_error_t webrtc_peer_manager_create(const webrtc_peer_manager_config_t *config, const webrtc_signaling_callbacks_t *signaling_callbacks, webrtc_peer_manager_t **manager_out)
Create a WebRTC peer manager.
asciichat_error_t webrtc_peer_manager_handle_ice(webrtc_peer_manager_t *manager, const acip_webrtc_ice_t *ice)
Handle incoming ICE candidate from ACDS.
webrtc_peer_role_t
Peer connection role (server or client).
asciichat_error_t(* webrtc_send_sdp_callback_t)(const uint8_t session_id[16], const uint8_t recipient_id[16], const char *sdp_type, const char *sdp, void *user_data)
Callback to send SDP via ACDS signaling.
void(* webrtc_gathering_timeout_callback_t)(const uint8_t participant_id[16], uint32_t timeout_ms, uint64_t elapsed_ms, void *user_data)
Callback when ICE candidate gathering is unusually slow.
asciichat_error_t webrtc_peer_manager_handle_sdp(webrtc_peer_manager_t *manager, const acip_webrtc_sdp_t *sdp)
Handle incoming SDP message from ACDS.
void webrtc_peer_manager_destroy(webrtc_peer_manager_t *manager)
Destroy peer manager and close all connections.
webrtc_state_t
ICE, signaling, DataChannel, and callback settings for a WebRTC peer.
asciichat_error_t webrtc_peer_manager_dispatch_ready(webrtc_peer_manager_t *manager)
struct webrtc_peer_manager webrtc_peer_manager_t
For pending ice candidate, this is the live record that ties candidate, mid, next together....
asciichat_error_t webrtc_peer_manager_connect(webrtc_peer_manager_t *manager, const uint8_t session_id[16], const uint8_t participant_id[16])
Initiate connection to remote peer (joiner role only).
asciichat_error_t(* webrtc_send_ice_callback_t)(const uint8_t session_id[16], const uint8_t recipient_id[16], const char *candidate, const char *mid, void *user_data)
Callback to send ICE candidate via ACDS signaling.
void(* webrtc_transport_ready_callback_t)(acip_transport_t *transport, const uint8_t participant_id[16], void *user_data)
Callback when DataChannel is ready and wrapped in ACIP transport.
int webrtc_peer_manager_check_gathering_timeouts(webrtc_peer_manager_t *manager, uint32_t timeout_ms)
Report slow ICE gathering and remove failed connections.
@ WEBRTC_ROLE_JOINER
Session joiner - generates offers, receives answers.
@ WEBRTC_ROLE_CREATOR
Session creator - accepts offers, generates answers.
Transport abstraction layer for ACIP protocol.
ACIP protocol message structures and helpers.
uint8_t session_id[SESSION_ID_SIZE]
uint8_t participant_id[SESSION_ID_SIZE]
Peer manager configuration.
webrtc_peer_role_t role
Session role (creator or joiner).
size_t turn_count
Number of TURN servers.
const char * turn_credential
Optional TURN credential override.
turn_server_t * turn_servers
TURN servers for relay.
const char * turn_username
Optional TURN credential override.
const char * bind_address
Optional local interface address for ICE sockets.
size_t stun_count
Number of STUN servers.
bool relay_only
Restrict ICE to TURN relay candidates.
void * user_data
Passed to callbacks.
webrtc_transport_ready_callback_t on_transport_ready
Called when DataChannel ready.
stun_server_t * stun_servers
STUN servers for ICE.
webrtc_gathering_timeout_callback_t on_gathering_timeout
Called when ICE gathering times out.
For pending ice candidate, this is the live record that ties candidate, mid, next together....
Hooks that deliver local SDP offers/answers and ICE candidates to ACDS.
void * user_data
Passed to callbacks.
webrtc_send_sdp_callback_t send_sdp
Send SDP via ACDS.
webrtc_send_ice_callback_t send_ice
Send ICE via ACDS.