[net2-wg] Proposal for dissemination structure and interfaces
Kyle Jamieson
jamieson at MIT.EDU
Sat Dec 17 18:03:09 PST 2005
This looks like a very well thought-out design. I have a few small
questions as follows.
> interface DisseminationValue <t> {
> command const t* get();
> event void changed();
> }
How about simplifying this down to
interface DisseminationValue <t> {
event void changed(const t*);
}
for simplicity? Passing just the pointer isn't very costly.
> Declaring a dissemination value requires instantiating a generic
> component:
>
> generic configuration DisseminatorC(typedef t, uint16_t key) {
> provides interface DisseminationValue <t>;
> provides interface DisseminationUpdate <t>;
> }
This is a nit-pick, but why not two configs, say DisseminatorC
and DisseminationC, which each provide interface DisseminationUpdate
and interface DisseminationValue, respectively? I guess the
motivation behind this is clarity for users. Or, is there perhaps a
situation where an app might use both DisseminationValue and
DisseminationUpdate? (I can't think of one..)
> For now, we limit <t> to be values that can fit in a single TinyOS
> packet. The implementation will check this at compile-time. The
> developer selects an integer key for each value that does not conflict
> with other values (like selecting AM identifiers).
Question: is the reason for this ease of implementation? Or is there
something in the interface that precludes large objects? (I can't see
anything).
> globally consistent versioning. Therefore, a value's metadata is a
> combination of a version number and the originator's AM address. This
> means that AM address is used to break ties. In the previous exammple,
> node A would eventually install node B's value (since B > A).
Just to clarify, you're saying that a dissemination version number is
an (app version number, AM addr) pair?
Kyle
More information about the net2-wg
mailing list