- 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