[comp.sys.isis] New message formats, continued

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