4.3BSD-Tahoe/usr/src/new/courier/README

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
			};