From 729b1e9941c0eeb0d51608c313ae2096ce13b2ba Mon Sep 17 00:00:00 2001
From: Fabio Alessandrelli <fabio.alessandrelli@gmail.com>
Date: Sat, 11 May 2019 01:46:27 +0200
Subject: WebRTC refactor. Data channels, STUN/TURN support.

A big refactor to the WebRTC module. API is now considered quite stable.

Highlights:

- Renamed `WebRTCPeer` to `WebRTCPeerConnection`.
- `WebRTCPeerConnection` no longer act as `PacketPeer`, it only handle the connection itself (a bit like `TCP_Server`)
- Added new `WebRTCDataChannel` class which inherits from `PacketPeer` to handle data transfer.
- Add `WebRTCPeerConnection.initialize` method to create a new connection with the desired configuration provided as dictionary ([see MDN docs](https://developer.mozilla.org/en-US/docs/Web/API/RTCPeerConnection/RTCPeerConnection#RTCConfiguration_dictionary)).
- Add `WebRTCPeerConnection.create_data_channel` method to create a data channel for the given connection. The connection must be in `STATE_NEW` as specified by the standard ([see MDN docs for options](https://developer.mozilla.org/en-US/docs/Web/API/RTCPeerConnection/createDataChannel#RTCDataChannelInit_dictionary)).
- Add a `data_channel_received` signal to `WebRTCPeerConnection` for in-band (not negotiated) channels.
- Renamed `WebRTCPeerConnection` `offer_created` signal to `session_description_created`.
- Renamed `WebRTCPeerConnection` `new_ice_candidate` signal to `ice_candidate_created`
---
 modules/webrtc/doc_classes/WebRTCDataChannel.xml   |  95 +++++++++++++++
 modules/webrtc/doc_classes/WebRTCPeer.xml          | 109 -----------------
 .../webrtc/doc_classes/WebRTCPeerConnection.xml    | 129 +++++++++++++++++++++
 3 files changed, 224 insertions(+), 109 deletions(-)
 create mode 100644 modules/webrtc/doc_classes/WebRTCDataChannel.xml
 delete mode 100644 modules/webrtc/doc_classes/WebRTCPeer.xml
 create mode 100644 modules/webrtc/doc_classes/WebRTCPeerConnection.xml

(limited to 'modules/webrtc/doc_classes')

diff --git a/modules/webrtc/doc_classes/WebRTCDataChannel.xml b/modules/webrtc/doc_classes/WebRTCDataChannel.xml
new file mode 100644
index 0000000000..dcc14d4ddb
--- /dev/null
+++ b/modules/webrtc/doc_classes/WebRTCDataChannel.xml
@@ -0,0 +1,95 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<class name="WebRTCDataChannel" inherits="PacketPeer" category="Core" version="3.2">
+	<brief_description>
+	</brief_description>
+	<description>
+	</description>
+	<tutorials>
+	</tutorials>
+	<methods>
+		<method name="close">
+			<return type="void">
+			</return>
+			<description>
+			</description>
+		</method>
+		<method name="get_id" qualifiers="const">
+			<return type="int">
+			</return>
+			<description>
+			</description>
+		</method>
+		<method name="get_label" qualifiers="const">
+			<return type="String">
+			</return>
+			<description>
+			</description>
+		</method>
+		<method name="get_max_packet_life_time" qualifiers="const">
+			<return type="int">
+			</return>
+			<description>
+			</description>
+		</method>
+		<method name="get_max_retransmits" qualifiers="const">
+			<return type="int">
+			</return>
+			<description>
+			</description>
+		</method>
+		<method name="get_protocol" qualifiers="const">
+			<return type="String">
+			</return>
+			<description>
+			</description>
+		</method>
+		<method name="get_ready_state" qualifiers="const">
+			<return type="int" enum="WebRTCDataChannel.ChannelState">
+			</return>
+			<description>
+			</description>
+		</method>
+		<method name="is_negotiated" qualifiers="const">
+			<return type="bool">
+			</return>
+			<description>
+			</description>
+		</method>
+		<method name="is_ordered" qualifiers="const">
+			<return type="bool">
+			</return>
+			<description>
+			</description>
+		</method>
+		<method name="poll">
+			<return type="int" enum="Error">
+			</return>
+			<description>
+			</description>
+		</method>
+		<method name="was_string_packet" qualifiers="const">
+			<return type="bool">
+			</return>
+			<description>
+			</description>
+		</method>
+	</methods>
+	<members>
+		<member name="write_mode" type="int" setter="set_write_mode" getter="get_write_mode" enum="WebRTCDataChannel.WriteMode">
+		</member>
+	</members>
+	<constants>
+		<constant name="WRITE_MODE_TEXT" value="0" enum="WriteMode">
+		</constant>
+		<constant name="WRITE_MODE_BINARY" value="1" enum="WriteMode">
+		</constant>
+		<constant name="STATE_CONNECTING" value="0" enum="ChannelState">
+		</constant>
+		<constant name="STATE_OPEN" value="1" enum="ChannelState">
+		</constant>
+		<constant name="STATE_CLOSING" value="2" enum="ChannelState">
+		</constant>
+		<constant name="STATE_CLOSED" value="3" enum="ChannelState">
+		</constant>
+	</constants>
+</class>
diff --git a/modules/webrtc/doc_classes/WebRTCPeer.xml b/modules/webrtc/doc_classes/WebRTCPeer.xml
deleted file mode 100644
index 18d1345623..0000000000
--- a/modules/webrtc/doc_classes/WebRTCPeer.xml
+++ /dev/null
@@ -1,109 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<class name="WebRTCPeer" inherits="PacketPeer" category="Core" version="3.2">
-	<brief_description>
-	</brief_description>
-	<description>
-	</description>
-	<tutorials>
-	</tutorials>
-	<methods>
-		<method name="add_ice_candidate">
-			<return type="int" enum="Error">
-			</return>
-			<argument index="0" name="media" type="String">
-			</argument>
-			<argument index="1" name="index" type="int">
-			</argument>
-			<argument index="2" name="name" type="String">
-			</argument>
-			<description>
-			</description>
-		</method>
-		<method name="create_offer">
-			<return type="int" enum="Error">
-			</return>
-			<description>
-			</description>
-		</method>
-		<method name="get_connection_state" qualifiers="const">
-			<return type="int" enum="WebRTCPeer.ConnectionState">
-			</return>
-			<description>
-			</description>
-		</method>
-		<method name="poll">
-			<return type="int" enum="Error">
-			</return>
-			<description>
-			</description>
-		</method>
-		<method name="set_local_description">
-			<return type="int" enum="Error">
-			</return>
-			<argument index="0" name="type" type="String">
-			</argument>
-			<argument index="1" name="sdp" type="String">
-			</argument>
-			<description>
-			</description>
-		</method>
-		<method name="set_remote_description">
-			<return type="int" enum="Error">
-			</return>
-			<argument index="0" name="type" type="String">
-			</argument>
-			<argument index="1" name="sdp" type="String">
-			</argument>
-			<description>
-			</description>
-		</method>
-		<method name="was_string_packet" qualifiers="const">
-			<return type="bool">
-			</return>
-			<description>
-			</description>
-		</method>
-	</methods>
-	<members>
-		<member name="write_mode" type="int" setter="set_write_mode" getter="get_write_mode" enum="WebRTCPeer.WriteMode">
-		</member>
-	</members>
-	<signals>
-		<signal name="new_ice_candidate">
-			<argument index="0" name="media" type="String">
-			</argument>
-			<argument index="1" name="index" type="int">
-			</argument>
-			<argument index="2" name="name" type="String">
-			</argument>
-			<description>
-			</description>
-		</signal>
-		<signal name="offer_created">
-			<argument index="0" name="type" type="String">
-			</argument>
-			<argument index="1" name="sdp" type="String">
-			</argument>
-			<description>
-			</description>
-		</signal>
-	</signals>
-	<constants>
-		<constant name="WRITE_MODE_TEXT" value="0" enum="WriteMode">
-		</constant>
-		<constant name="WRITE_MODE_BINARY" value="1" enum="WriteMode">
-		</constant>
-		<constant name="STATE_NEW" value="0" enum="ConnectionState">
-		</constant>
-		<constant name="STATE_CONNECTING" value="1" enum="ConnectionState">
-		</constant>
-		<constant name="STATE_CONNECTED" value="2" enum="ConnectionState">
-		</constant>
-		<constant name="STATE_DISCONNECTED" value="3" enum="ConnectionState">
-		</constant>
-		<constant name="STATE_FAILED" value="4" enum="ConnectionState">
-		</constant>
-		<constant name="STATE_CLOSED" value="5" enum="ConnectionState">
-		</constant>
-	</constants>
-</class>
diff --git a/modules/webrtc/doc_classes/WebRTCPeerConnection.xml b/modules/webrtc/doc_classes/WebRTCPeerConnection.xml
new file mode 100644
index 0000000000..8b14c60deb
--- /dev/null
+++ b/modules/webrtc/doc_classes/WebRTCPeerConnection.xml
@@ -0,0 +1,129 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<class name="WebRTCPeerConnection" inherits="Reference" category="Core" version="3.2">
+	<brief_description>
+	</brief_description>
+	<description>
+	</description>
+	<tutorials>
+	</tutorials>
+	<methods>
+		<method name="add_ice_candidate">
+			<return type="int" enum="Error">
+			</return>
+			<argument index="0" name="media" type="String">
+			</argument>
+			<argument index="1" name="index" type="int">
+			</argument>
+			<argument index="2" name="name" type="String">
+			</argument>
+			<description>
+			</description>
+		</method>
+		<method name="close">
+			<return type="void">
+			</return>
+			<description>
+			</description>
+		</method>
+		<method name="create_data_channel">
+			<return type="WebRTCDataChannel">
+			</return>
+			<argument index="0" name="label" type="String">
+			</argument>
+			<argument index="1" name="options" type="Dictionary" default="{
+
+}">
+			</argument>
+			<description>
+			</description>
+		</method>
+		<method name="create_offer">
+			<return type="int" enum="Error">
+			</return>
+			<description>
+			</description>
+		</method>
+		<method name="get_connection_state" qualifiers="const">
+			<return type="int" enum="WebRTCPeerConnection.ConnectionState">
+			</return>
+			<description>
+			</description>
+		</method>
+		<method name="initialize">
+			<return type="int" enum="Error">
+			</return>
+			<argument index="0" name="configuration" type="Dictionary" default="{
+
+}">
+			</argument>
+			<description>
+			</description>
+		</method>
+		<method name="poll">
+			<return type="int" enum="Error">
+			</return>
+			<description>
+			</description>
+		</method>
+		<method name="set_local_description">
+			<return type="int" enum="Error">
+			</return>
+			<argument index="0" name="type" type="String">
+			</argument>
+			<argument index="1" name="sdp" type="String">
+			</argument>
+			<description>
+			</description>
+		</method>
+		<method name="set_remote_description">
+			<return type="int" enum="Error">
+			</return>
+			<argument index="0" name="type" type="String">
+			</argument>
+			<argument index="1" name="sdp" type="String">
+			</argument>
+			<description>
+			</description>
+		</method>
+	</methods>
+	<signals>
+		<signal name="data_channel_received">
+			<argument index="0" name="channel" type="Object">
+			</argument>
+			<description>
+			</description>
+		</signal>
+		<signal name="ice_candidate_created">
+			<argument index="0" name="media" type="String">
+			</argument>
+			<argument index="1" name="index" type="int">
+			</argument>
+			<argument index="2" name="name" type="String">
+			</argument>
+			<description>
+			</description>
+		</signal>
+		<signal name="session_description_created">
+			<argument index="0" name="type" type="String">
+			</argument>
+			<argument index="1" name="sdp" type="String">
+			</argument>
+			<description>
+			</description>
+		</signal>
+	</signals>
+	<constants>
+		<constant name="STATE_NEW" value="0" enum="ConnectionState">
+		</constant>
+		<constant name="STATE_CONNECTING" value="1" enum="ConnectionState">
+		</constant>
+		<constant name="STATE_CONNECTED" value="2" enum="ConnectionState">
+		</constant>
+		<constant name="STATE_DISCONNECTED" value="3" enum="ConnectionState">
+		</constant>
+		<constant name="STATE_FAILED" value="4" enum="ConnectionState">
+		</constant>
+		<constant name="STATE_CLOSED" value="5" enum="ConnectionState">
+		</constant>
+	</constants>
+</class>
-- 
cgit v1.2.3