ascii-chat 0.11.33
Video chat in your terminal
Loading...
Searching...
No Matches
peer_manager.h
Go to the documentation of this file.
1
30#pragma once
31
32#include <stdint.h>
33#include <stdbool.h>
34#include "../../common.h"
35#include "../../network/webrtc/webrtc.h"
36#include "../../network/acip/transport.h"
37#include "../../network/acip/messages.h"
38
39#ifdef __cplusplus
40extern "C" {
41#endif
42
49// Forward declarations
51
59
71 void *user_data);
72
85 uint64_t elapsed_ms, void *user_data);
86
105
117typedef asciichat_error_t (*webrtc_send_sdp_callback_t)(const uint8_t session_id[16], const uint8_t recipient_id[16],
118 const char *sdp_type, const char *sdp, void *user_data);
119
131typedef asciichat_error_t (*webrtc_send_ice_callback_t)(const uint8_t session_id[16], const uint8_t recipient_id[16],
132 const char *candidate, const char *mid, void *user_data);
133
142
143// ============================================================================
144// Peer Manager Lifecycle
145// ============================================================================
146
161 const webrtc_signaling_callbacks_t *signaling_callbacks,
162 webrtc_peer_manager_t **manager_out);
163
172
173// ============================================================================
174// Signaling Message Processing
175// ============================================================================
176
190
201
202// ============================================================================
203// Connection Initiation (Joiner Role)
204// ============================================================================
205
219 const uint8_t participant_id[16]);
220
223 webrtc_state_t *state_out);
225 const uint8_t participant_id[16]);
226
227// ============================================================================
228// Connection Health Monitoring
229// ============================================================================
230
248
// end of webrtc_peer_manager group
250
251#ifdef __cplusplus
252}
253#endif
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 long long uint64_t
Definition common.h:59
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
stun_server_t
Definition stun.h:75
turn_server_t
Definition turn.h:101
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.
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.
webrtc_state_t
WebRTC connection state.
uint8_t session_id[16]
uint8_t participant_id[16]
ClangTool/LibTooling compatibility shim for stdbool.h.
Transport instance structure.
Definition transport.h:214
Cryptographic context structure.
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.
crypto_context_t * crypto_ctx
Crypto context for transports.
stun_server_t * stun_servers
STUN servers for ICE.
webrtc_gathering_timeout_callback_t on_gathering_timeout
Called when ICE gathering times out.
WebRTC peer manager structure.
Signaling callbacks for sending SDP/ICE.
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.