Title: Courier Author: Eric C. Cooper Address: Computer Science Division, EECS University of California Berkeley, CA 94720 Net address: cooper@berkeley (ARPA) ucbvax!cooper (UUCP) Description: This is the Courier remote procedure call protocol for Berkeley UNIX (version 4.2). Courier is both a protocol and a specification language. The protocol specifies how remote procedures are invoked and how parameters and results of various data types are transmitted. The specification language, somewhat reminiscent of Mesa, provides a simple way of defining the remote interfaces of distributed programs. Warning: Complicated Courier types are sometimes incorrectly translated into C. Until the next release, this can be avoided by always "factoring out" subtypes as named types in their own right. -- For example, use this: ChoiceType : TYPE = CHOICE OF { a (0) => INTEGER, b (1) => LONG CARDINAL, c (2) => STRING }; T : TYPE = SEQUENCE OF ChoiceType; -- rather than this: T : TYPE = SEQUENCE OF CHOICE OF { a (0) => INTEGER, b (1) => LONG CARDINAL, c (2) => STRING };