- From: Peter Thatcher <pthatcher@google.com>
- Date: Tue, 22 Dec 2015 15:39:00 -0800
- To: Martin Thomson <martin.thomson@gmail.com>
- Cc: Bernard Aboba <Bernard.Aboba@microsoft.com>, "public-webrtc@w3.org" <public-webrtc@w3.org>
- Message-ID: <CAJrXDUELwaFGHAntXScS7cKdv9dWcX9NV4A-OBz_seS8udzYQg@mail.gmail.com>
On Thu, Dec 17, 2015 at 5:15 PM, Martin Thomson <martin.thomson@gmail.com> wrote: > On 18 December 2015 at 07:57, Bernard Aboba <Bernard.Aboba@microsoft.com> > wrote: > > However, because "a=end-of-candidates" is not per m-line, it operates > only at the level of the "ICE Agent" rather than individually on each of > the RTCIceTransport objects and their "state" attributes. > > We've certainly implemented it as a per-media-section attribute. > There's no reason that the signal can't be more granular, just that > the signal we have in SDP loses a bit of information. Firefox does > have a single agent that signals a single end to the gathering phase, > but the attribute is added to every affected media section. > > > This means that it is not applicable to ORTC/WebRTC NV. > > ??? You don't have a notion of an ICE agent? I thought that we'd > agreed that an ICE agent was a good idea. There is an IceController. But it doesn't have an aggregate connection state, since ORTC/WebRTC NV is a low-level API and the application can aggregate states how it wants. > In either case, I think that the right answer is to use the underlying > state: have you finished gathering, rather than use > a=end-of-candidates for that state. If you want to report a failed > state, then you only do so if gathering is done (or stopped for now if > you prefer) and all the checks have failed for those pairs that you do > have > . > I don't think there's any reason to have a "failed" state at all in ORTC/WebRTC NV . It's really just a combination of two dimensions: [still gathering, done gathering] x [init, checking, connected, disconnected], and if the application cares to combine those two states, it can, but there's no reason to do it with a low-level API. Similarly, the "completed" is a compound that that doesn't need to be created in a low-level API since the JS can do so. > I'm an anti-fan of the idea of a special candidate, favouring instead > a separate method, but I get the appeal. > I'm not a fan of a special end-of-candidates value either. However, if it's a separate method, what percentage of applications do you think will remember to listen to the event, signal the event, and call the method on the remote end, and notice if they didn't do it correctly? And if no one uses it, why put it in there? Another option is to say something like "if you haven't gotten a candidate in 15 seconds since the last candidate, assume that's the end". While a little hacky, it will work even if an application doesn't remember to set up the extra end-of-candidates signalling.
Received on Tuesday, 22 December 2015 23:40:08 UTC