Subject: Receiver of a signal
From: Rick Reed TSE (rickreed#tseng.co.uk)
Date: Thu Dec 21 2000 - 15:35:47 GMT
Assume an agent A that contains an agents A1 and a state machine (called A -
of course).
Assume a channel C from an agent B leading to A that joins two channels C1
to A1 and CA to A.
Assume that C1 conveys S1 to A1 and CA conveys SA. C conveys S1 and SA to
agent A.
Assume that B creates two (or more) instances of A and contains a string of
Pids storing the Pid values for A instances.
VALUE TYPE Pidstring INHERITS String<Pid>;
DCL apid Pidstring;
What happens for the output in B
OUTPUT S1 TO apid[1];
Is S1
a) delivered to the boundary of the instance of A, and then delivered
according to the internal channels of A?
or
b) delivered to the state machine of the instance of A?
or
c) not allowed because there is a static error?
or
d) not output but the exception InvalidReference raised?
Intuitively I would think that (a) is the correct answer.
However, it seems to me from Z.100 that the answer is (d). The reason is the
OUTPUT does a compatibility check between the signal and the dynamic sort of
the pid expression, apid[1] which is an interface pid sort. If the pid
expression is not of sort Pid (for example, if the string type was VALUE
TYPE Pidstring INHERITS String<A>; ), a static check is made against the
interface pid sort and the answer is (c).
The compatibility check is defined such that it includes all the signals to
the state machine of A. However, it does not include incoming signals on
gates on the agent diagram that are not received by the agent state machine.
(see 12.1.2)
I therefore conclude that to send a signal S1 to the agent A1 in a specified
instance of A, it is also necessary to have the Pid of the instance of A1.
This is counter-intuitive to me, and requires a lot of additional Pid
handling.
Does everyone agree with my interpretation of Z.100?
If yes, is that what we intended?
If no, explain what happens and why my interpretation is wrong and/or what
errors exist in Z.100.
-- Rick Reed - rickreed#tseng.co.uk Tel:+44 1455 55 96 55 Fax:+44 1455 55 96 58 Mob.:+44 7970 50 96 50
This archive was generated by hypermail 2a23 : Mon May 05 2008 - 20:30:55 GMT