The most basic notion of time in ProtoCollum tool is the relative ordering
of protocol Events. This ordering is inherent in the passing of messages, an Event to
send Msg_A must have necessarily occurred before the Event of receiving Msg_A.
This ordering is a partial ordering only. Only the events under each PE and along the flow
of message arrows are strictly ordered. In general it is not possible to state whether an
event in one PE occurred before or after any other arbitrary event on another PE.
But this partial ordering is sufficient for the tool to provide feedback to the user to
prevent erroneous placement of events, as shown by the temporal violation symbol in the diagram.
Sometimes the protocol behavior must be synchronized with the real world. For instance, a
specification may indicate that an error message is sent if a response in not received in
2 msec. In an actual protocol implementation, a clock signal would be monitored to track
the passage of time.
Similarly, a clock object is provided on the Test sheet to note the passage of time.
A clock signal can be thought of simply as a message arriving on a periodic basis. It has no
parameters and simply causes the receiving Processing Entity (PE) to increment a counter.
As a shorthand convenience an input can be given to the clock object to indicate how
many time units will be added to the PE counter.
Both the relative ordering of Events and the time units counted from clock objects can be referenced
in time expressions as part of the guard for a rule. The expressions can be of arbitrary complexity,
such as: "the reply message must arrive after 2 msec but no more than 10 msec".
|