package com.serliunx.statemanagement.machine;
import com.serliunx.statemanagement.machine.handler.StateHandler;
import com.serliunx.statemanagement.machine.handler.StateHandlerProcessParams;
import com.serliunx.statemanagement.machine.handler.StateHandlerWrapper;
import com.serliunx.statemanagement.manager.AbstractStateManager;
import java.util.List;
import java.util.Map;
import java.util.concurrent.Executor;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.TimeUnit;
import java.util.function.Consumer;
/**
* 状态机抽象实现, 实现最基本功能
*
* @author SerLiunx
* @version 1.0.0
* @since 2024/12/31
*/
public abstract class AbstractStateMachine extends AbstractStateManager implements StateMachine {
/**
* 状态机上下文
*/
protected final StateMachineContext context;
/**
* 默认的构造函数
*
* @param entryHandlers 进入事件处理器集合
* @param leaveHandlers 离开事件处理器集合
* @param exchangeHandlers 交换事件处理器集合
* @param executor 异步执行器
* @param async 是否异步执行
*/
AbstractStateMachine(List stateList,
Map>> entryHandlers,
Map>> leaveHandlers,
Map>> exchangeHandlers,
Map