[BXXPwg] Multichannel Protocol Design

Marshall T. Rose mrose+mtr.netnews@dbc.mtview.ca.us
Mon, 15 Jan 2001 14:58:48 -0800

> If I'm designing a protocol with command and data channels, e.g.,
> commands flow from the initiating peer to the listener and data flows
> back from the listener over one or more data channels, I assume the
> obvious approach would be to create command and data profiles for the
> respective channels. Having done that what is the obvious approach to
> coordinating channel creation and interaction, i.e., making sure that
> data channels get created as necessary, that the data requested gets
> delivered, etc.? Is it correct to say that beyond the channel management
> mechanism BEEP doesn't provide any explicit support for this aspect of
> protocol design?

hi. from your description, it sounds like you're organizing your application
around 1+N channels, where the first channel is orchestrating the behavior
of the other N channels. if this is not the case, ignore the rest of the
message and explain what you're trying to do.

if this is the case, then you're right: the channel management mechanism
doesn't provide any way for you to coordinate the behavior of the channels
you create. you can define your own profile to do what you want.

for example, i know of a family of profiles that do queries against a
datastore and return document names. each profile has its own custom query
language. there is another profile that does only logical operations on
result sets, each "term" in it's query language consists of an arbitrary
string and a channel number. the semantics are pretty simple: give that
existing channel this string, take the results as the thing to work on next.

this is one of many possible ways of structuring an application. your job is
to decide what makes the most sense for your application.