FusionAds-iOS/FusionAds/Classes/fusion/utils/state/IState.swift

29 lines
944 B
Swift
Raw Normal View History

// 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 }
}