Skip to content

Commit 9de8c39

Browse files
author
hyperandroid
committed
User message identification.
1 parent 01b5d96 commit 9de8c39

File tree

2 files changed

+27
-8
lines changed

2 files changed

+27
-8
lines changed

automata.d.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@ declare module FSM {
6767
prevState : FSM.State;
6868
state : FSM.State;
6969
message : FSM.TransitionMessage;
70+
isUserMessage : boolean;
7071
}
7172

7273
export interface TransitionGuardEvent {

automata.js

Lines changed: 26 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,8 @@
8080
* context : FSM.SessionContext,
8181
* prevState : FSM.State,
8282
* state : FSM.State,
83-
* message : FSM.TransitionMessage
83+
* message : FSM.TransitionMessage,
84+
* isUserMessage : boolean
8485
* }}
8586
*/
8687
FSM.SessionStateChangeEvent;
@@ -1396,6 +1397,8 @@
13961397
*/
13971398
this._messages = [];
13981399

1400+
this._userMessage = msg;
1401+
13991402
this.push( msg );
14001403

14011404
return this;
@@ -1406,6 +1409,10 @@
14061409
*/
14071410
FSM.SessionMessageQueue.prototype = {
14081411

1412+
isUserMessage : function( msg ) {
1413+
return msg===this._userMessage;
1414+
},
1415+
14091416
/**
14101417
*
14111418
* @param message {FSM.TransitionMessage} a valid FSM message. can be null if called from the initial state context.
@@ -1616,8 +1623,8 @@
16161623
// trivial exit
16171624
if ( queue.getNumMessages()===0 ) {
16181625

1619-
queue.notify( this );
16201626
this.messageQueues.shift();
1627+
queue.notify( this );
16211628
if ( this.messageQueues.length>0 ) {
16221629
this.__doConsume();
16231630
}
@@ -1852,13 +1859,18 @@
18521859
* @param msg {FSM.TransitionMessage}
18531860
*/
18541861
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+
18551866
for( var i=0; i<this.sessionListener.length; i++ ) {
18561867
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
18621874
});
18631875
}
18641876
},
@@ -1967,7 +1979,13 @@
19671979
*
19681980
* @param obj {FSM.TransitionGuardEvent}
19691981
*/
1970-
guardPostCondition : function( obj ) {}
1982+
guardPostCondition : function( obj ) {},
1983+
1984+
/**
1985+
*
1986+
* @param obj {FSM.SessionStateChangeEvent}
1987+
*/
1988+
userStateChange : function( obj ) {}
19711989
};
19721990

19731991
/**

0 commit comments

Comments
 (0)