Arpc


D. Heimbigner

Description

Arpc (pronounced ``arp-cee'') is an extension to the publically available ONC RPC/XDR system version 4.0 (from Sun Microsystems). It was developed as part of the DARPA sponsored Arcadia environments project. Arpc provides a number of capabilities not available in the normal Sun RPC packages. These capabilities include:

  1. Combined Client Server Support: Arpc makes it relatively easy to define services that can simultaneously service requests from clients plus make client calls to other services. Additionally, one can have a single process act as multiple servers in that it can respond to multiple program numbers.
  2. Peer Communication Style: The current communication paradigm in Sun RPC is (not surprisingly) remote procedure call in which the client calls the server and the server replies to that client request. A peer communication protocol supports a message passing style in which two peer processes send streams of messages in each direction.
  3. Request Acknowledgement: In the current RPC protocol, if the client does not receive a reply in some period of time, it may retransmit the request, or timeout and return an error to the client. Unfortunately, some requests in the server may take very long periods of time. Arpc allows a service to return an acknowledgement to a client indicating that a request was received. When the client sees this, it can suppress retransmission and extend the timeout period.
  4. Exception Returns: As somewhat of an experiment, Arpc allows a service to return a reply as an exception rather than a normal return value.
  5. Decomposition of Functionality: The basic operations needed to accomplish RPC and message passing have been broken out into discrete operations. This means that Arpc can, with a modest amount of work. be embedded into almost any programming language that can call C code. In particular, Arpc can be made to operate in languages such as Ada that are threaded, but that do not necessarily use any standard threading package as part of their runtime. The Q system (see below) demonstrates this for Ada by making Arpc functionality available for Ada programs.

In spite of these changes, Arpc is source compatible with ONC RPC/XDR. That is, one need only recompile RPC applications (clients and servers) with the Arpc headers and library and the application should operate exactly the same as if ONC RPC/XDR 4.0 was used. Additionally, programs using ONC 4.0 can usually correctly communicate with programs that use Arpc.

By itself, Arpc is useful as an improvement over standard ONC RPC/XDR. It is intended, however to be used as part of the Q/CORBA system, which adds significant capability on top of Arpc and which provides significant Ada support as well.

The file doc/arpc.tex contains a more detailed description of the capabilities of Arpc.

Retrieving Arpc

Source:
ftp://ftp.cs.colorado.edu/pub/cs/distribs/arcadia/Arpc403.3f.tar.Z

Information file:
ftp://ftp.cs.colorado.edu/pub/cs/distribs/arcadia/Arpc403.3f.txt

Installation

The file INSTALL provides detailed installation instructions.

Changes

See the appendix in the file doc/arpc.tex for a detailed change history.


SERL Home ©1998 Software Engineering Research Laboratory (SERL)
Last updated: 02-15-98