ken@gvax.cs.cornell.edu (Ken Birman) (10/14/89)
I think I mentioned that we are recoding the message library routines
for speed and to reduce their size, and that as part of this I am
extending the format part of msg_put and msg_get.
Based on the feedback I've received, the current plan is this:
1) Floating point will be supported, but only for IEEE standard formats.
2) For those of you with big data objects that you don't want ISIS to
copy, there will be a new format item %*..., as in:
msg_put(mp, "%*D", my_data, nelems, <routine>);
The corresponding arguments are:
a pointer to your data area
length in elements of the base type (ints, above)
a routine to call when <mp> is deleted for the last time
Example:
my_data = (int*)malloc(sizeof(int)*NINTS);
msg_put(mp, "%*D", my_data, NINTS, free);
For applications that maintain buffer pools, you could also supply
a routine that puts your pbuffer back on the free list when the
message is deleted.
ISIS sometimes keeps messages around for a while, so the free routine
might not get called anytime really soon after you do your msg_delete.
3) I will probably support an interface
isis_define_struct('x', "{%d,%f,...}", sizeof(my_struct));
where you can define a new format item (%x in this case) to correspond
to a structure described in terms of other, predefined format items.
You will need to specify the size so that ISIS can check for "odd
kinds of padding" that might cause trouble. We'll add an IE_PADDING
error code for this case
You would need to call this on both send and receive side, with the
same format and the same structure size...
4) The whole thing will be quite a bit faster than the current version.
Pleae let me know if you see anything we are overlooking...
Ken