On Monday, April 24, 2006 03:11:52 PM -0400 Jeffrey Altman <[EMAIL PROTECTED]> wrote:

The way AFS has implemented data structure extensions in the past is
by implementing a new RPC with a new data structure.  It would be
reasonable for the new RPC to be a multi-roundtrip implementation
which includes the total number of servers available and the client
would ask for up to NMAXNSERVERS starting at a particular index
value.

Ew, why? While I know 13 is somewhat low, I don't expcet the number of sites for a given volume to ever be unreasonably huge. Use a vector instead of an array, set a reasonable limit, and fetch them all at once. You can increase the limit later and the procedure remains wire-compatible. If you're concerned about giving a client more responses than it's prepared to handle, have the client pass an IN parameter indicating the maximum number of sites to be listed in the reply.

OTOH, the whole "make the RPC again and expect different results" idea is entirely unacceptable. It changes the semantics of an existing interface and requires the vlserver to become stateful, all totally unnecessarily.


It's also worth noting that you can't just add things on to the end of a structure that's part of an RPC argument and expect things to work. These aren't data structures in memory that you pass a pointer to; they're marshalled onto the wire element-by-element. Structures defined in xg files are part of the wire protocol and cannot be changed.


-- Jeff

_______________________________________________
AFS3-standardization mailing list
[email protected]
http://michigan-openafs-lists.central.org/mailman/listinfo/afs3-standardization

Reply via email to