Re: SDL-News: Servicing Multi-state rpcs


Subject: Re: SDL-News: Servicing Multi-state rpcs
From: Rick Reed TSE (rickreed#tseng.co.uk)
Date: Sun May 16 1999 - 13:32:00 GMT


The originator of this message is responsible for its content.
-----From Rick Reed TSE <rickreed#tseng.co.uk> to sdlnews -----

At 15:26 +0100 15/5/99, Piyush Gupta wrote:
>The following question is about how remote procedures with
>multiple states are serviced according to SDL92 semantics :
>
>If a remote procedure is not occuring in save or as input in
>some transition from a state in process transition diagram,
>then there exists an implicit transition for it for this state
>(as in Z.100).
>
>Does this hold true for all the states i.e. not only for the
>states defined in the process graph but also for the states of
>all the local/exported procedures ?
>
>Consider the following example :-
>
>In a process-state s, I receive a remote procedure call for rpc1.
>rpc1 is now executed while the current state remains s.
>Suppose rpc1 waits for signal sig1 in some state rs1, then
>remote procedure call for rpc2 arrives in the input queue.
>
>There are 2 alternatives :
>1. rpc2 is serviced while remaining in state rs1
>2. rpc2 is serviced after rpc1 completes its execution.
>
>It is not clear from the standard that which of the two
>alternatives is correct ?

Z.100 (4.14 Remote Procedures) states

"b) Server process

There is a declaration of an implicit variable, called ivar of sort PId.

To all <state>s with a remote procedure input transition the following
<input part> is added:

input pCALL(fpar);
ivar := sender
call Proc(fpar);
output pREPLY (fINOUTpar) to ivar;
<transition>

where fpar and fINOUTpar are analogous to apar and aINOUT above.

To all <state>s, with a remote procedure save, the following <save part>
is added:

save pCALL;

To all other <state>s excluding implicit states derived from input, the
following <input part> is added:

input pCALL(fpar);
ivar := sender
call Proc(fpar);
output pREPLY (fINOUTpar) to ivar;
/* next state the same */"

In the example given there are no explicit remote procedure so the last
case applies ("other states").

The "other states" only excludes implicit states and therefore does not
exclude states within any procedures.

A process is either in a state or in a transition. It is not strictly
correct to say that "the current state remains s" once a transition is
entered. When the server process gets to the state rs1 in the procedure
rpc1 then it can handle another remote procedure call (for example of rpc2,
but also of rpc1). So the answer to your query is:

"1. rpc2 is serviced while remaining in state rs1"

However, there is an ambiguity in the Z.100 model for the case where the
same procedure gets invoked again, because the model does not say where the
implicit variable ivar is defined. This is defined in the local context of
the state, so that if the procedure is invoked again, there will be another
instance of ivar - in this way each pREPLY is sent back to the "correct"
sender.

Rick <rickreed#tseng.co.uk>
Tel:+44 1455 559655 Fax:+44 1455 559658 Mob:+44 7970 509650

-----End text from Rick Reed TSE <rickreed#tseng.co.uk> to sdlnews -----
Join http://www.sdl-forum.org/Society/members.htm for extra SDL Forum Society benefits
For help, email "majordomo#sdl-forum.org" with the body of your email as:
    help
or (iff this does not answer your question) email: owner-sdlnews#sdl-forum.org



This archive was generated by hypermail 2a23 : Sun Jun 16 2013 - 10:41:40 GMT