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