|
| 1 | +/** |
| 2 | + * Created by ibon on 2/8/16. |
| 3 | + */ |
| 4 | +export interface Message { |
| 5 | + msgId: string; |
| 6 | + data?: any; |
| 7 | +} |
| 8 | +export declare type GenericMap<T> = { |
| 9 | + [name: string]: T; |
| 10 | +}; |
| 11 | +export declare type Action = <T>(session: Session<T>, message: Message) => T; |
| 12 | +export interface AutoTransitionJson { |
| 13 | + millis: number; |
| 14 | + data?: any; |
| 15 | +} |
| 16 | +export interface TransitionJson { |
| 17 | + from: string; |
| 18 | + to: string; |
| 19 | + event: string; |
| 20 | + timeout?: AutoTransitionJson; |
| 21 | +} |
| 22 | +export interface FSMJson { |
| 23 | + name: string; |
| 24 | + state: string[]; |
| 25 | + initial_state: string; |
| 26 | + transition: TransitionJson[]; |
| 27 | +} |
| 28 | +export declare type SessionMessageCallback = <T>(session: Session<T>, message?: Message) => void; |
| 29 | +export declare type SessionMessageCallbackError = <T>(session: Session<T>, message?: string) => void; |
| 30 | +export declare class SessionConsumeMessagePromise<T> { |
| 31 | + _success: SessionMessageCallback; |
| 32 | + _error: SessionMessageCallbackError; |
| 33 | + constructor(); |
| 34 | + then(ok: SessionMessageCallback, error?: SessionMessageCallbackError): this; |
| 35 | + __success(s: Session<T>, m: Message): void; |
| 36 | + __error(s: Session<T>, message?: string): void; |
| 37 | +} |
| 38 | +export declare class FSMRegistry { |
| 39 | + static _fsm: GenericMap<FSM>; |
| 40 | + static FSMFromId(id: string): FSM; |
| 41 | + static register(fsm_json: FSMJson): void; |
| 42 | + static createSession<T>(session_controller: T, fsm_id: string, o?: SessionObserver<T>): SessionConsumeMessagePromise<T>; |
| 43 | +} |
| 44 | +export interface StateAutoTransitionElement { |
| 45 | + millis: number; |
| 46 | + message?: Message; |
| 47 | + timer_id?: number; |
| 48 | +} |
| 49 | +export declare class State { |
| 50 | + _name: string; |
| 51 | + _exit_transitions: GenericMap<Transition>; |
| 52 | + _exit_transitions_count: number; |
| 53 | + _enter_action: Action; |
| 54 | + _exit_action: Action; |
| 55 | + _auto_transition: StateAutoTransitionElement[]; |
| 56 | + constructor(name: string); |
| 57 | + transitionForMessage(m: Message): Transition; |
| 58 | + addExitTransition(t: Transition): void; |
| 59 | + name: string; |
| 60 | + __onExit<T>(s: Session<T>, m: Message): boolean; |
| 61 | + __onEnter<T>(s: Session<T>, m: Message): boolean; |
| 62 | + __startTimeoutTransitionElements<T>(s: Session<T>): void; |
| 63 | + __stopTimeoutTransitionElements(): void; |
| 64 | + __notifyTimeoutEvent<T>(s: Session<T>, m: Message): void; |
| 65 | + __setTimeoutTransitionInfo(millis: number, message: Message): void; |
| 66 | + isFinal(): boolean; |
| 67 | + toString(): string; |
| 68 | +} |
| 69 | +export declare class FSM extends State { |
| 70 | + _states: State[]; |
| 71 | + _transitions: Transition[]; |
| 72 | + _initial_state: State; |
| 73 | + constructor(fsm: FSMJson); |
| 74 | + initial_state: State; |
| 75 | + serialize(): FSMJson; |
| 76 | + __createStates(states: string[], initial: string): void; |
| 77 | + __setInitialState(st: State): void; |
| 78 | + __createInitialTransition(): void; |
| 79 | + __createEnterAction(): void; |
| 80 | + __findStateByName(n: string): State; |
| 81 | + __createTransitions(transitions: TransitionJson[]): void; |
| 82 | +} |
| 83 | +export declare class Transition { |
| 84 | + static __InitialTransitionEvent: string; |
| 85 | + static __InitialTransitionMessage: Message; |
| 86 | + _event: string; |
| 87 | + _initial_state: State; |
| 88 | + _final_state: State; |
| 89 | + constructor(from: State, to: State, event: string); |
| 90 | + event: string; |
| 91 | + final_state: State; |
| 92 | + toString(): string; |
| 93 | +} |
| 94 | +export interface SerializedSessionContext { |
| 95 | + current_state: string; |
| 96 | + prev_state: string; |
| 97 | +} |
| 98 | +export declare class SessionContext { |
| 99 | + _current_state: State; |
| 100 | + _prev_state: State; |
| 101 | + constructor(c: State, p: State); |
| 102 | + serialize(): SerializedSessionContext; |
| 103 | + current_state: State; |
| 104 | + prev_state: State; |
| 105 | + currentStateName(): string; |
| 106 | + prevStateName(): string; |
| 107 | + printStackTrace(): void; |
| 108 | +} |
| 109 | +export interface SessionObserverEvent<T> { |
| 110 | + session: Session<T>; |
| 111 | + message: Message; |
| 112 | + custom_message?: Message; |
| 113 | + current_state_name: string; |
| 114 | + prev_state_name: string; |
| 115 | +} |
| 116 | +export interface SessionObserver<T> { |
| 117 | + contextCreated(e: SessionObserverEvent<T>): void; |
| 118 | + contextDestroyed(e: SessionObserverEvent<T>): void; |
| 119 | + sessionEnded(e: SessionObserverEvent<T>): void; |
| 120 | + customEvent(e: SessionObserverEvent<T>): void; |
| 121 | + stateChanged(e: SessionObserverEvent<T>): void; |
| 122 | +} |
| 123 | +export interface SerializedSession { |
| 124 | + ended: boolean; |
| 125 | + controller: any; |
| 126 | + states: SerializedSessionContext[]; |
| 127 | + fsm: FSMJson; |
| 128 | +} |
| 129 | +export declare class Session<T> { |
| 130 | + _fsm: FSM; |
| 131 | + _session_controller: T; |
| 132 | + _states: SessionContext[]; |
| 133 | + _ended: boolean; |
| 134 | + _messages_controller: SessionMessagesController<T>; |
| 135 | + _observers: SessionObserver<T>[]; |
| 136 | + _sessionEndPromise: SessionConsumeMessagePromise<T>; |
| 137 | + constructor(session_controller: T); |
| 138 | + __initialize(fsm: FSM): SessionConsumeMessagePromise<T>; |
| 139 | + __serializeController(): any; |
| 140 | + serialize(): SerializedSession; |
| 141 | + static deserialize<T, U>(s: SerializedSession, deserializer: (sg: U) => T): Session<T>; |
| 142 | + __deserialize(s: SerializedSession): void; |
| 143 | + addObserver(o: SessionObserver<T>): void; |
| 144 | + /** |
| 145 | + * User side message. |
| 146 | + */ |
| 147 | + dispatchMessage<U extends Message>(m: U): SessionConsumeMessagePromise<T>; |
| 148 | + /** |
| 149 | + * From SessionController internals. |
| 150 | + */ |
| 151 | + postMessage(m: Message): void; |
| 152 | + __messageImpl(m: Message): void; |
| 153 | + current_state: State; |
| 154 | + prev_state: State; |
| 155 | + __onEnter(m: Message): void; |
| 156 | + __onExit(m: Message): void; |
| 157 | + __invoke(method: string, m: Message): any; |
| 158 | + __consumeMessageForFSM(m: Message): void; |
| 159 | + __findStateWithTransitionForMessage(m: Message): State; |
| 160 | + __exitAllStatesUpToStateWithTransitionForMessage(stateWitTransition: State, m: Message): void; |
| 161 | + __popAllStates(m: Message): void; |
| 162 | + __setCurrentState(s: State, m: Message): void; |
| 163 | + __endSession(m: Message): void; |
| 164 | + current_state_name: string; |
| 165 | + prev_state_name: string; |
| 166 | + __consumeMessageForState(m: Message): void; |
| 167 | + __processMessage(state_for_message: State, m: Message): void; |
| 168 | + fireCustomEvent(message: any): void; |
| 169 | + __notifySessionEnded(m: Message): void; |
| 170 | + __notifyContextCreated(m: Message): void; |
| 171 | + __notifyContextDestroyed(m: Message): void; |
| 172 | + __notifyStateChange(m: Message): void; |
| 173 | + __notify(m: Message, method: string): void; |
| 174 | + controller: T; |
| 175 | + printStackTrace(): void; |
| 176 | +} |
| 177 | +export declare class SessionMessageControllerMessageQueue<T> { |
| 178 | + _session: Session<T>; |
| 179 | + _triggering_message: Message; |
| 180 | + _messages_queue: Message[]; |
| 181 | + _callback: SessionConsumeMessagePromise<T>; |
| 182 | + constructor(session: Session<T>, m: Message, callback?: SessionConsumeMessagePromise<T>); |
| 183 | + postMessage(m: Message): void; |
| 184 | + __consumeMessage(): boolean; |
| 185 | +} |
| 186 | +export declare class SessionMessagesController<T> { |
| 187 | + _session: Session<T>; |
| 188 | + _message_queues: SessionMessageControllerMessageQueue<T>[]; |
| 189 | + _consuming: boolean; |
| 190 | + constructor(session: Session<T>); |
| 191 | + dispatchMessage(m: Message, callback?: SessionConsumeMessagePromise<T>): void; |
| 192 | + postMessage(m: Message): void; |
| 193 | + __consumeMessage(): void; |
| 194 | + __consumeOne(): void; |
| 195 | +} |
| 196 | +export declare class Automata { |
| 197 | + static RegisterFSM(file: string | FSMJson): void; |
| 198 | + static CreateSession<T>(controller: T, fsm_name: string, o?: SessionObserver<T>): SessionConsumeMessagePromise<T>; |
| 199 | +} |
0 commit comments