Re: Asynchronous BEEP draft status
"Sam Roberts" <[email protected]> Wed, 26 Nov 2008 18:44:30 -0800
| Newsgroups | gmane.ietf.beep |
|---|---|
| Message-ID | <[email protected]> |
On Wed, Nov 26, 2008 at 3:21 PM, Thomson, Martin <[email protected]> wrote: > Sam: >> Note that Vortex delivers each MSG on a seperate thread, exactly as >> described above. > > If this is the case, then this is directly against the stated requirement in RFC 3080, Section 2.6.1: > > A BEEP peer acting in the server role must process all "MSG" messages > for a given channel in the same order as they are received. This is far-fetched. Vortex is acting correctly. It delivers the MSGs to the API serially (to different threads). BEEP places no requirements on the what "process" means for a profile. [reordered] > Sam: >> BEEP msgnos are ordered across a channel, of course, but application >> msgs can be replied whenever you want. > > This is in direct contravention of the quoted requirement, above. BEEP RPYs are passing over the wire in the RFC defined order. I could write the code in the other toolkits I use, too (beepy, swirl/beepcore-c, and beep4j). > Of course, to operate in this mode, a client will have to implement a demux layer that redirects responses to the entity that originated the request. Without this layer, the BEEP stack would redirect responses to the wrong entity. > In your example, the entity that makes request 3 would receive response 5 instead. This is less of a problem in C, but much more of a problem for an OO language implementation, c.f. beep4j. > You've made a conscious decision to move the complexity to the application. Yes, where it belongs. Demonstrably trivial complexity (implementable in a few lines of C code in my example, I don't believe its harder with beep4j, we use it, its a good toolkit). The complexity of the code that implements application functionality will dwarf these few lines. This is what BEEP is designed for, to be a protocol to build protocols, not a finished thing implementing everything you could want. > Sam: >> c - BEEP adoption suffers from non-interoperability of existing toolkits. > > Feature negotiation ensures that this option cannot be used without agreement. I can't see how this work affects interoperability. Some toolkits will have it, some won't. Profiles specified as needing the extension will be implementable with some toolkits, not with others. Cheers, Sam