If a remote procedure call system is to be truly location and access
transparent, it should provide the same semantics as local procedure
call. Most procedural languages provide recursion. To this end, a
remote procedure call system should provide recursion remotely as
well. In this sense, a client may also be a server if some of its
procedures are available to other clients. Callback is illustrated in
#fnrpcback#485>
A choice is usually made as to whether the client may be called by
servers as a result of calls to those servers, or by arbitrary clients
at any time. If the first choice is made, this is sometimes known as
;SPM_quot;call back;SPM_quot;. The clients/servers reverse roles as calls result in a
tree of processes with a thread going from root to branch causing
possible further trees of processes. To maintain the integrity of the
group of processes in the tree, it may be necessary to carry a
;SPM_quot;conversation;SPM_quot; marker in call and reply messages.
The restriction of call back to the already involved processes can
simplify exception handling (;SPM_quot;orphan extermination;SPM_quot;, see
#fnorph#486>).
#figure487#
Figure: Recursion and Call Back
#figure492#
Figure: Recursion and Orphans