[WebRTC] Expose more of the WebRTC API.

Add get_gathering_state() returning the iceGatheringState of the
connection.

Add get_signaling_state() returning the signalingState of the
connection.

Improve JS library.
This commit is contained in:
Fabio Alessandrelli 2022-09-08 04:39:32 +02:00
parent 22a09fef5d
commit dbff58ebdd
9 changed files with 237 additions and 85 deletions

View file

@ -67,6 +67,18 @@
Returns the connection state. See [enum ConnectionState].
</description>
</method>
<method name="get_gathering_state" qualifiers="const">
<return type="int" enum="WebRTCPeerConnection.GatheringState" />
<description>
Returns the ICE [enum GatheringState] of the connection. This lets you detect, for example, when collection of ICE candidates has finished.
</description>
</method>
<method name="get_signaling_state" qualifiers="const">
<return type="int" enum="WebRTCPeerConnection.SignalingState" />
<description>
Returns the [enum SignalingState] on the local end of the connection while connecting or reconnecting to another peer.
</description>
</method>
<method name="initialize">
<return type="int" enum="Error" />
<param index="0" name="configuration" type="Dictionary" default="{}" />
@ -165,5 +177,32 @@
<constant name="STATE_CLOSED" value="5" enum="ConnectionState">
The peer connection is closed (after calling [method close] for example).
</constant>
<constant name="GATHERING_STATE_NEW" value="0" enum="GatheringState">
The peer connection was just created and hasn't done any networking yet.
</constant>
<constant name="GATHERING_STATE_GATHERING" value="1" enum="GatheringState">
The ICE agent is in the process of gathering candidates for the connection.
</constant>
<constant name="GATHERING_STATE_COMPLETE" value="2" enum="GatheringState">
The ICE agent has finished gathering candidates. If something happens that requires collecting new candidates, such as a new interface being added or the addition of a new ICE server, the state will revert to gathering to gather those candidates.
</constant>
<constant name="SIGNALING_STATE_STABLE" value="0" enum="SignalingState">
There is no ongoing exchange of offer and answer underway. This may mean that the [WebRTCPeerConnection] is new ([constant STATE_NEW]) or that negotiation is complete and a connection has been established ([constant STATE_CONNECTED]).
</constant>
<constant name="SIGNALING_STATE_HAVE_LOCAL_OFFER" value="1" enum="SignalingState">
The local peer has called [method set_local_description], passing in SDP representing an offer (usually created by calling [method create_offer]), and the offer has been applied successfully.
</constant>
<constant name="SIGNALING_STATE_HAVE_REMOTE_OFFER" value="2" enum="SignalingState">
The remote peer has created an offer and used the signaling server to deliver it to the local peer, which has set the offer as the remote description by calling [method set_remote_description].
</constant>
<constant name="SIGNALING_STATE_HAVE_LOCAL_PRANSWER" value="3" enum="SignalingState">
The offer sent by the remote peer has been applied and an answer has been created and applied by calling [method set_local_description]. This provisional answer describes the supported media formats and so forth, but may not have a complete set of ICE candidates included. Further candidates will be delivered separately later.
</constant>
<constant name="SIGNALING_STATE_HAVE_REMOTE_PRANSWER" value="4" enum="SignalingState">
A provisional answer has been received and successfully applied in response to an offer previously sent and established by calling [method set_local_description].
</constant>
<constant name="SIGNALING_STATE_CLOSED" value="5" enum="SignalingState">
The [WebRTCPeerConnection] has been closed.
</constant>
</constants>
</class>

View file

@ -37,6 +37,16 @@
<description>
</description>
</method>
<method name="_get_gathering_state" qualifiers="virtual const">
<return type="int" enum="WebRTCPeerConnection.GatheringState" />
<description>
</description>
</method>
<method name="_get_signaling_state" qualifiers="virtual const">
<return type="int" enum="WebRTCPeerConnection.SignalingState" />
<description>
</description>
</method>
<method name="_initialize" qualifiers="virtual">
<return type="int" enum="Error" />
<param index="0" name="p_config" type="Dictionary" />