29 lines
944 B
Swift
29 lines
944 B
Swift
|
|
// IState.swift
|
||
|
|
// The interface for implementing states in a StateMachine
|
||
|
|
// Ported from Android implementation
|
||
|
|
|
||
|
|
import Foundation
|
||
|
|
|
||
|
|
/// Protocol defining the interface for implementing states in a state machine
|
||
|
|
public protocol IState {
|
||
|
|
|
||
|
|
/// Called when a state is entered
|
||
|
|
/// - Parameters:
|
||
|
|
/// - from: State we are coming from
|
||
|
|
/// - params: Optional parameters for state transition
|
||
|
|
func enter(from: IState?, params: Any?)
|
||
|
|
|
||
|
|
/// Called when a state is exited
|
||
|
|
/// - Parameter to: State we are transitioning to
|
||
|
|
func exit(to: IState?)
|
||
|
|
|
||
|
|
/// Process a message sent to the state machine
|
||
|
|
/// - Parameter msg: The message to process
|
||
|
|
/// - Returns: HANDLED if processing has completed or NOT_HANDLED if the message wasn't processed
|
||
|
|
func processMessage(_ msg: Message) -> Bool
|
||
|
|
|
||
|
|
/// Name of State for debugging purposes
|
||
|
|
/// - Returns: name of state
|
||
|
|
var name: String { get }
|
||
|
|
}
|