Greetings, all,
I've just committed a bunch of changes to hackyKernel (and a few to hackyAnt and
hackyStdExt) to support "phase I" of the evolutionary sensor data type implementation.
What I mean by "Phase I" is the implementation of an alternative "transmission protocol"
for sensor data from the client to the server. Basically, in the original implementation
I did in 2001, I sent the data regarding a sensor data entry as an ordered list of field
values. So, a sensor data entry might be received at the server as <tstamp value> <tool
value> <filename value> etc. The order the fields are sent is the same order in which
they appear in the sensor data type definition, which is how we determine that the second
value is to be associated with the "tool" field.
In the evolutionary SDT setting, fields can be added or deleted over time, and the SDT
definition in place at the client (within their sensorshell) might not necessarily be in
sync with the SDT definition in place at the server (which might have "evolved"). Due to
these features, the "ordered list" protocol for sensor data transmission is not good for
evolution.
What I've implemented is a new, "keyword" based transmission protocol, in which the data
is sent as a set of pairs, the first element being the field name, and the second element
being the field value. With this transmission protocol in place, the server can now have
a different SDT definition than the client, and these differences can be managed at least
to some extent. For example, if the evolved SDT definition includes a new field where a
default value has been specified, the server can tell whether or not this field is being
sent by a client and if it is absent the server can simply provide the default value.
Part of the implementation trickiness to this process is maintaining current
functionality while implementing this new mechanism. So, the current commits are not
intended to break any existing behavior. While I've made a bunch of low-level additions
to hackyKernel to support this new mechanism, I've kept the old mechanism around, and the
new transmission protocol has to be explicitly enabled by sending a
"setTransmissionProtocol" command to the sensorshell with the value
Notification.KEYWORDS. (Don't try this at home, folks!) I've also implemented, within
hackyKernel, a new SDT package called EvolSdt which I am using to exercise the new
capabilities.
I've successfully done a local freshStart junitAll with what I believe is the equivalent
of hackystat-ALL, and I've also done a successful build on hackydev with hackystat-UH, so
with any luck this first set of changes hasn't thrown us into the weeds.
For more details on the direction I'm heading, please see:
<http://hackydev.ics.hawaii.edu/hackyDevSite/doc/evolutionarySDT.html>
Have a good weekend.
Cheers,
Philip