Squashed 'third_party/rawrtc/rawrtc/' content from commit aa3ae4b24
Change-Id: I38a655a4259b62f591334e90a1315bd4e7e4d8ec
git-subtree-dir: third_party/rawrtc/rawrtc
git-subtree-split: aa3ae4b247275cc6e69c30613b3a4ba7fdc82d1b
diff --git a/src/ice_server/server.h b/src/ice_server/server.h
new file mode 100644
index 0000000..da9c9a6
--- /dev/null
+++ b/src/ice_server/server.h
@@ -0,0 +1,49 @@
+#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);