Skip to content

Commit 01b5d96

Browse files
author
hyperandroid
committed
Better definition of session listener object message.
1 parent eb50863 commit 01b5d96

File tree

2 files changed

+53
-11
lines changed

2 files changed

+53
-11
lines changed

automata.d.ts

Lines changed: 44 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,41 @@ declare module FSM {
5151
(state:State, transition:Transition, message:TransitionMessage):void;
5252
}
5353

54+
55+
export interface SessionFinalStateReachedEvent {
56+
session : FSM.Session;
57+
}
58+
59+
export interface SessionContextEvent {
60+
session : FSM.Session;
61+
context : FSM.SessionContext;
62+
}
63+
64+
export interface SessionStateChangeEvent {
65+
session : FSM.Session;
66+
context : FSM.SessionContext;
67+
prevState : FSM.State;
68+
state : FSM.State;
69+
message : FSM.TransitionMessage;
70+
}
71+
72+
export interface TransitionGuardEvent {
73+
session : FSM.Session;
74+
transition : FSM.Transition;
75+
message : FSM.TransitionMessage;
76+
exception : string;
77+
}
78+
79+
export interface SessionCustomEvent {
80+
session : FSM.Session;
81+
data : any;
82+
}
83+
84+
class SessionContext {
85+
getState() : FSM.State;
86+
printStackTrace() : void;
87+
}
88+
5489
class Session {
5590

5691
consume( message : TransitionMessage, consumeCallback? : FSM.ConsumeCallback );
@@ -61,6 +96,7 @@ declare module FSM {
6196
removeProperty( key:string );
6297
getProperty( key:string ) : any;
6398
start( callback:ConsumeCallback ) : void;
99+
fireCustomEvent( e:any ) : void;
64100
}
65101

66102
class GuardException {
@@ -70,13 +106,13 @@ declare module FSM {
70106
}
71107

72108
class SessionListener {
73-
contextCreated( obj );
74-
contextDestroyed( obj );
75-
finalStateReached( obj );
76-
stateChanged( obj );
77-
customEvent( obj );
78-
guardPreCondition( obj );
79-
guardPostCondition( obj );
109+
contextCreated( e:SessionContextEvent );
110+
contextDestroyed( e:SessionContextEvent );
111+
finalStateReached( e:SessionFinalStateReachedEvent );
112+
stateChanged( e:SessionStateChangeEvent );
113+
customEvent( e:SessionCustomEvent );
114+
guardPreCondition( e:TransitionGuardEvent );
115+
guardPostCondition( e:TransitionGuardEvent );
80116
}
81117

82118
class State {
@@ -86,6 +122,7 @@ declare module FSM {
86122

87123
class Transition {
88124
getEvent() : string;
125+
getStartState() : FSM.State;
89126
}
90127

91128
export interface StateTransitionCallback {

automata.js

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@
101101
* data : Object,
102102
* }}
103103
*/
104-
FSM.CustomEvent;
104+
FSM.SessionCustomEvent;
105105

106106
/**
107107
* @typedef {{
@@ -634,6 +634,9 @@
634634
*/
635635
FSM.Transition.prototype= {
636636

637+
getStartState : function() {
638+
return this.initialState;
639+
},
637640

638641
/**
639642
* @return {string} transition's firing event.
@@ -1179,8 +1182,6 @@
11791182
printStackTrace : function() {
11801183
FSM.Log.d(" "+this.currentState.getName());
11811184
}
1182-
1183-
11841185
};
11851186

11861187
/**
@@ -1896,6 +1897,10 @@
18961897
}
18971898
},
18981899

1900+
/**
1901+
*
1902+
* @param obj {Object}
1903+
*/
18991904
fireCustomEvent : function( obj ) {
19001905
for( var i=0; i<this.sessionListener.length; i++ ) {
19011906
this.sessionListener[i].customEvent( {
@@ -1948,7 +1953,7 @@
19481953

19491954
/**
19501955
*
1951-
* @param obj {FSM.CustomEvent}
1956+
* @param obj {FSM.SessionCustomEvent}
19521957
*/
19531958
customEvent : function( obj ) {},
19541959

0 commit comments

Comments
 (0)