|
80 | 80 | * context : FSM.SessionContext, |
81 | 81 | * prevState : FSM.State, |
82 | 82 | * state : FSM.State, |
83 | | - * message : FSM.TransitionMessage |
| 83 | + * message : FSM.TransitionMessage, |
| 84 | + * isUserMessage : boolean |
84 | 85 | * }} |
85 | 86 | */ |
86 | 87 | FSM.SessionStateChangeEvent; |
|
1396 | 1397 | */ |
1397 | 1398 | this._messages = []; |
1398 | 1399 |
|
| 1400 | + this._userMessage = msg; |
| 1401 | + |
1399 | 1402 | this.push( msg ); |
1400 | 1403 |
|
1401 | 1404 | return this; |
|
1406 | 1409 | */ |
1407 | 1410 | FSM.SessionMessageQueue.prototype = { |
1408 | 1411 |
|
| 1412 | + isUserMessage : function( msg ) { |
| 1413 | + return msg===this._userMessage; |
| 1414 | + }, |
| 1415 | + |
1409 | 1416 | /** |
1410 | 1417 | * |
1411 | 1418 | * @param message {FSM.TransitionMessage} a valid FSM message. can be null if called from the initial state context. |
|
1616 | 1623 | // trivial exit |
1617 | 1624 | if ( queue.getNumMessages()===0 ) { |
1618 | 1625 |
|
1619 | | - queue.notify( this ); |
1620 | 1626 | this.messageQueues.shift(); |
| 1627 | + queue.notify( this ); |
1621 | 1628 | if ( this.messageQueues.length>0 ) { |
1622 | 1629 | this.__doConsume(); |
1623 | 1630 | } |
|
1852 | 1859 | * @param msg {FSM.TransitionMessage} |
1853 | 1860 | */ |
1854 | 1861 | fireStateChanged : function( sessionContext, fromState, newState, msg ) { |
| 1862 | + |
| 1863 | + // FDA, dont have message queues. |
| 1864 | + var ium= this.messageQueues.length && this.messageQueues[0].isUserMessage(msg); |
| 1865 | + |
1855 | 1866 | for( var i=0; i<this.sessionListener.length; i++ ) { |
1856 | 1867 | this.sessionListener[i].stateChanged( { |
1857 | | - session : this, |
1858 | | - context : sessionContext, |
1859 | | - prevState : fromState, |
1860 | | - state : newState, |
1861 | | - message : msg |
| 1868 | + session : this, |
| 1869 | + context : sessionContext, |
| 1870 | + prevState : fromState, |
| 1871 | + state : newState, |
| 1872 | + message : msg, |
| 1873 | + isUserMessage : ium |
1862 | 1874 | }); |
1863 | 1875 | } |
1864 | 1876 | }, |
|
1967 | 1979 | * |
1968 | 1980 | * @param obj {FSM.TransitionGuardEvent} |
1969 | 1981 | */ |
1970 | | - guardPostCondition : function( obj ) {} |
| 1982 | + guardPostCondition : function( obj ) {}, |
| 1983 | + |
| 1984 | + /** |
| 1985 | + * |
| 1986 | + * @param obj {FSM.SessionStateChangeEvent} |
| 1987 | + */ |
| 1988 | + userStateChange : function( obj ) {} |
1971 | 1989 | }; |
1972 | 1990 |
|
1973 | 1991 | /** |
|
0 commit comments