Apps Messaging - Semantics of a Message

Mike Fitzpatrick mjfitzpatrick at gmail.com
Fri Apr 6 23:38:55 PDT 2007


> >     refID     An ID assigned by an app to be used as a reference to a
> >               result object in future messages it may receive.  In some
> >               cases this may be an opaque handle to something like "the
> >               image you loaded in the display", in other cases it can be
> >               de-referenced to an actual file/image that was created
> >               (e.g. the output of a "Save Image" message).  Applications
> >               may choose to not return a refID if it is a purely
> >               transient result (e.g. a plot of an image histogram where
> >               the data for the plot is not saved) or cannot meaningfully
> >               be referenced by a later message (e.g. a subset of table
> >               rows that may be highlighted but cannot be addressed as a
> >               new table).
>
> Erm... we're straying into bits of spec here that will hideously
> complicate things, while admittedly making the protocol more
> powerful. I'm not convinced this is needed (Re my arguments about the
> conceptual approach to messages).

How tricky it is depends on how the spec is written.  The case I had in
mind was e.g. requesting that an app crossmatch/intersect two tables
and this app creates a new internal table.  From the GUI this may be
a new window you could interact with, but how would I address that
new table (e.g. to make a new query/plot of it) without knowing it's internal
reference?  The refID allows a REPLY to create some sort of handle for
that internal thing that could be recognized later.  We don't need the app
to keep the state, a REPLY could register the refID with the Hub in some
sort of lookup table.  The alternative is to assume everything is file-based,
but that has complications as well.


> >       In this model, clients can determine for themselves how many other
> > apps are available, what their capabilities are, etc.
>>             :
> Okay, although I'm worried that this could start to needlessly
> complicate things, I'm really keen to maintain "simple" as the
> overriding definition of this specification.

The spec *can* remaiin simple in this respect, but we get
flexibility in how complicated individual clients want to be.  A
number of the msg systems I looked at started by allowing
both synch/asych delivery and moved strictly to asynch since
it was more tolerant to failure of apps and the synch behavior
could be coded if needed.


-Mike



More information about the apps mailing list