Recursion and Call Back

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>).

Figure: Recursion and Call Back

Figure: Recursion and Orphans