blob: da9c9a63922aac99188c5cd1b5576f5d2a3c4221 [file] [log] [blame]
#pragma once
#include <rawrtc/ice_gather_options.h>
#include <rawrtc/ice_server.h>
#include <rawrtcc/code.h>
#include <re.h>
/*
* ICE server type.
* Note: Update `ice_server_schemes` if changed.
*/
enum rawrtc_ice_server_type {
RAWRTC_ICE_SERVER_TYPE_STUN,
RAWRTC_ICE_SERVER_TYPE_TURN,
};
struct rawrtc_ice_server {
struct le le;
struct list urls; // deep-copied
char* username; // copied
char* credential; // copied
enum rawrtc_ice_credential_type credential_type;
};
/*
* ICE server URL. (list element)
*/
struct rawrtc_ice_server_url {
struct le le;
char* url; // copied
struct pl host; // points inside `url`
enum rawrtc_ice_server_type type;
enum rawrtc_ice_server_transport transport;
struct sa resolved_address;
};
enum rawrtc_code rawrtc_ice_server_create(
struct rawrtc_ice_server** const serverp, // de-referenced
char* const* const urls, // copied
size_t const n_urls,
char* const username, // nullable, copied
char* const credential, // nullable, copied
enum rawrtc_ice_credential_type const credential_type);
enum rawrtc_code rawrtc_ice_server_copy(
struct rawrtc_ice_server** const serverp, // de-referenced
struct rawrtc_ice_server* const source_server);
int rawrtc_ice_server_debug(
struct re_printf* const pf, struct rawrtc_ice_server const* const server);