W3C home > Mailing lists > Public > www-voice@w3.org > January to March 2013

Re: revised mainEventLoop

From: David Junger <tffy@free.fr>
Date: Fri, 8 Mar 2013 17:51:30 +0100
To: "www-voice@w3.org (www-voice@w3.org)" <www-voice@w3.org>
Message-Id: <3C8742D1-DD90-44E1-94DE-E4C79D59DB38@free.fr>
Le 8 mar 2013 à 13:57, Jim Barnett a écrit :

> David,
> The intent is that eventless transitions always take priority, so we test them first each time around the loop.  For example, suppose we take a transition from S1 to S2 on internal event e.  The first thing we do in S2 is test for eventless transitions.   Even though there were no eventless transitions enabled in S1 (if there were, we would have taken them instead of dequeuing e), there may be new ones enabled once we reach S2.  S1’s onexit handlers, the executable content in the transition, or S2’s onentry handlers may all have modified the datamodel.  (The most obvious use case would be an onentry handler that counts how often you have  entered the state with eventless transitions providing special behavior based on the count.)

I understand that but fail to see how testing eventless transitions first, but once, at the beginning of the loop, would not accomplish it.
As in:

while running and not macrostepDone:
	// try eventless first
	if enabledTransitions is empty:
		// consume internal events until one matches something
		while (event=internalQueue.dequeue()):
			if enabledTransitions is not empty: break
	if enabledTransitions is empty:
	else: microstep(enabledTransitions)

If an internal event doesn't match any transition, the configuration won't change, nothing is exited or entered. Targetless transitions aren't going to be enabled by simply consuming a new event unless they were testing _event in their condition.

Received on Friday, 8 March 2013 16:52:02 UTC

This archive was generated by hypermail 2.3.1 : Tuesday, 6 January 2015 21:07:43 UTC