- From: Randell Jesup <randell-ietf@jesup.org>
- Date: Mon, 01 Apr 2013 15:58:49 -0400
- To: public-webrtc@w3.org, "rtcweb@ietf.org" <rtcweb@ietf.org>
On 4/1/2013 12:48 PM, Martin Thomson wrote:
> This looks fine, but I'd like to bike shed just a little.
>
> On 31 March 2013 19:29, Randell Jesup <randell-ietf@jesup.org> wrote:
>> Here's a proposed API for DataChannels with external negotiation, per the
>> recent Interim and IETF meeting (most of this was in my previous W3 email,
>> but I've added info on when 'stream' is valid to read, and how even/odd
>> roles are assigned for the IETF protocol). I'll note for the IETF folks that
>> 'protocol' is in a JS dictionary object in this update, which avoids
>> breaking any current experimental applications (and avoids them having any
>> incentive to UA-sniff). Also, I think it works better in the dictionary.
>>
>> channel = peerconnection.createDataChannel(label, dictionary_object);
>>
>> /* If either maxRetransmitTime or maxRetransmitNum are set, it's
>> unreliable, else it's a reliable channel. If both are set it's an
>> error. outOfOrderAllowed can be used with any type of channel. The
>> equivalent of UDP is { outOfOrderAllowed: true, maxRetransmitNum: 0 }.
>> The TCP equivalent is {}.
>>
>> preset is set to true if the channel is being externally negotiated, and
>> no wireline OpenRequest message should be sent. If preset is true,
>> stream
>> can be optionally used to set a specific SCTP stream to use. If it's
>> not set but preset is true, then the application should read the 'stream'
>> attribute from the returned DataChannel after onopen and convey it to the
>> other end to pass in via the DataChannelInit dictionary.
>> */
> A lot of your text can be replaced by defaults on the dictionary.
>
> I prefer 'ordered' over 'outOfOrderAllowed', even if it means an
> inversion of the values.
Probably is easier to understand, and defaults help.
> 'rtxCount' or 'retransmitCount' rather than
> 'maxRetransmitNum' (max is implied).
I don't know that removing 'max' helps here or hurts. Also,
sorta-acronyms like rtx are obvious to networking people; not so much to
JS app developers. I see only minimal advantage here to brevity. Count
might be an improvement on Num.
> 'preset' doesn't sound right, maybe you could have 'inlineOpen'
> (default: true) to convey what is really happening here.
externallyNegotiated (default: false)? Not great, but "inlineOpen" will
be pretty meaningless to most developers who probably could care less if
there's an in-band open message for a channel (whether externally
negotiated or not) - or even know there's an in-band message. Then
again, 99% of developers don't need to care about this anyways.
>> dictionary DataChannelInit {
>> boolean ordered = true;
>> unsigned short retransmitPeriod = 65535; // !
>> unsigned short retransmitCount = 65535;
>> DOMString protocol; // default: undefined
>> boolean inlineOpen = true;
>> unsigned short stream; // default: browser selected
>> };
> unsigned short is an unusual type for time intervals, even if you
> don't foresee a need for more than 65 seconds. Oh, and that assumes
> that you are using milliseconds, right?
Unsigned short has been the type in the protocol fields since the first
draft (like a year). Perhaps a silly optimization, though I think if
you want partial reliability with >64K resends, or >64 seconds of retry
that you *really* want reliable transmission (perhaps unordered, but
reliable). If we want to change it, now's the time, since we're
breaking binary compatibility in FF with my landing today anyways.
--
Randell Jesup
randell-ietf@jesup.org
Received on Monday, 1 April 2013 20:00:53 UTC