blob: da9c9a63922aac99188c5cd1b5576f5d2a3c4221 [file] [log] [blame]
James Kuszmaul4a42b182021-01-17 11:32:46 -08001#pragma once
2#include <rawrtc/ice_gather_options.h>
3#include <rawrtc/ice_server.h>
4#include <rawrtcc/code.h>
5#include <re.h>
6
7/*
8 * ICE server type.
9 * Note: Update `ice_server_schemes` if changed.
10 */
11enum rawrtc_ice_server_type {
12 RAWRTC_ICE_SERVER_TYPE_STUN,
13 RAWRTC_ICE_SERVER_TYPE_TURN,
14};
15
16struct rawrtc_ice_server {
17 struct le le;
18 struct list urls; // deep-copied
19 char* username; // copied
20 char* credential; // copied
21 enum rawrtc_ice_credential_type credential_type;
22};
23
24/*
25 * ICE server URL. (list element)
26 */
27struct rawrtc_ice_server_url {
28 struct le le;
29 char* url; // copied
30 struct pl host; // points inside `url`
31 enum rawrtc_ice_server_type type;
32 enum rawrtc_ice_server_transport transport;
33 struct sa resolved_address;
34};
35
36enum rawrtc_code rawrtc_ice_server_create(
37 struct rawrtc_ice_server** const serverp, // de-referenced
38 char* const* const urls, // copied
39 size_t const n_urls,
40 char* const username, // nullable, copied
41 char* const credential, // nullable, copied
42 enum rawrtc_ice_credential_type const credential_type);
43
44enum rawrtc_code rawrtc_ice_server_copy(
45 struct rawrtc_ice_server** const serverp, // de-referenced
46 struct rawrtc_ice_server* const source_server);
47
48int rawrtc_ice_server_debug(
49 struct re_printf* const pf, struct rawrtc_ice_server const* const server);