change: 代码清理、注释修复.
This commit is contained in:
@@ -1,6 +1,8 @@
|
|||||||
package com.serliunx.statemanagement.exception;
|
package com.serliunx.statemanagement.exception;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* 状态机异常
|
||||||
|
*
|
||||||
* @author <a href="mailto:serliunx@yeah.net">SerLiunx</a>
|
* @author <a href="mailto:serliunx@yeah.net">SerLiunx</a>
|
||||||
* @version 1.0.0
|
* @version 1.0.0
|
||||||
* @since 2024/12/28
|
* @since 2024/12/28
|
||||||
|
|||||||
@@ -13,6 +13,8 @@ import java.util.concurrent.atomic.AtomicInteger;
|
|||||||
import java.util.function.Consumer;
|
import java.util.function.Consumer;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* 状态机上下文集合, 用于构建参数封装
|
||||||
|
*
|
||||||
* @author <a href="mailto:serliunx@yeah.net">SerLiunx</a>
|
* @author <a href="mailto:serliunx@yeah.net">SerLiunx</a>
|
||||||
* @version 1.0.0
|
* @version 1.0.0
|
||||||
* @since 2025/2/2
|
* @since 2025/2/2
|
||||||
|
|||||||
@@ -9,7 +9,6 @@ package com.serliunx.statemanagement.machine.handler;
|
|||||||
* @version 1.0.0
|
* @version 1.0.0
|
||||||
* @since 2024/12/28
|
* @since 2024/12/28
|
||||||
*/
|
*/
|
||||||
@SuppressWarnings("all")
|
|
||||||
public final class StateHandlerProcessParams<S> {
|
public final class StateHandlerProcessParams<S> {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -29,7 +28,6 @@ public final class StateHandlerProcessParams<S> {
|
|||||||
* @param from 原状态
|
* @param from 原状态
|
||||||
* @param to 目标状态
|
* @param to 目标状态
|
||||||
* @param attach 附加参数
|
* @param attach 附加参数
|
||||||
* @param bidirectionalStateManager 状态机内置的状态管理器
|
|
||||||
*/
|
*/
|
||||||
public StateHandlerProcessParams(S from, S to, Object attach) {
|
public StateHandlerProcessParams(S from, S to, Object attach) {
|
||||||
this.from = from;
|
this.from = from;
|
||||||
|
|||||||
@@ -1,10 +0,0 @@
|
|||||||
package com.serliunx.statemanagement.machine.handler;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author <a href="mailto:serliunx@yeah.net">SerLiunx</a>
|
|
||||||
* @version 1.0.0
|
|
||||||
* @since 2024/12/28
|
|
||||||
*/
|
|
||||||
public class StateHandlerRegistry {
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -11,7 +11,6 @@ import java.util.concurrent.Executor;
|
|||||||
* @version 1.0.0
|
* @version 1.0.0
|
||||||
* @since 2024/12/28
|
* @since 2024/12/28
|
||||||
*/
|
*/
|
||||||
@SuppressWarnings("all")
|
|
||||||
public final class StateHandlerWrapper<S> {
|
public final class StateHandlerWrapper<S> {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -33,6 +33,7 @@ public interface StateManager<S> {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取当前状态数量
|
* 获取当前状态数量
|
||||||
|
*
|
||||||
* @return 数量
|
* @return 数量
|
||||||
*/
|
*/
|
||||||
int size();
|
int size();
|
||||||
|
|||||||
@@ -21,8 +21,11 @@ public class MachineTest {
|
|||||||
@Test
|
@Test
|
||||||
public void testStandardStateMachine() throws Exception {
|
public void testStandardStateMachine() throws Exception {
|
||||||
StateMachine<PrinterState> stateMachine = StateMachineBuilder.from(PrinterState.values())
|
StateMachine<PrinterState> stateMachine = StateMachineBuilder.from(PrinterState.values())
|
||||||
.async(true)
|
.async(false)
|
||||||
.standard()
|
.standard()
|
||||||
|
.exchange(PrinterState.IDLE, PrinterState.SCANNING, h -> {
|
||||||
|
System.out.println("hello~");
|
||||||
|
})
|
||||||
.whenLeave(PrinterState.IDLE, h -> {
|
.whenLeave(PrinterState.IDLE, h -> {
|
||||||
System.out.println(Thread.currentThread().getName() + ": leave IDLE");
|
System.out.println(Thread.currentThread().getName() + ": leave IDLE");
|
||||||
})
|
})
|
||||||
@@ -32,28 +35,26 @@ public class MachineTest {
|
|||||||
.whenEntry(PrinterState.STOPPED, h -> {
|
.whenEntry(PrinterState.STOPPED, h -> {
|
||||||
System.out.println(Thread.currentThread().getName() + ": entry STOPPED, from " + h.getFrom());
|
System.out.println(Thread.currentThread().getName() + ": entry STOPPED, from " + h.getFrom());
|
||||||
})
|
})
|
||||||
.whenHappened(PrinterEvent.TURN_ON, m -> {
|
|
||||||
m.switchTo(PrinterState.SCANNING);
|
|
||||||
})
|
|
||||||
.whenHappened(PrinterEvent.TURN_OFF, m -> {
|
|
||||||
if (m.switchTo(PrinterState.STOPPING))
|
|
||||||
m.switchTo(PrinterState.STOPPED);
|
|
||||||
})
|
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
stateMachine.publish(PrinterEvent.TURN_ON);
|
stateMachine.switchTo(PrinterState.SCANNING);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testConcurrentStateMachine() throws Exception {
|
public void testConcurrentStateMachine() throws Exception {
|
||||||
ConcurrentStateMachine<PrinterState> stateMachine = StateMachineBuilder.from(PrinterState.values())
|
ConcurrentStateMachine<PrinterState> stateMachine = StateMachineBuilder.from(PrinterState.values())
|
||||||
|
.async()
|
||||||
.whenEntry(PrinterState.STOPPING, h -> {
|
.whenEntry(PrinterState.STOPPING, h -> {
|
||||||
System.out.println(1111);
|
System.out.println(1111);
|
||||||
})
|
})
|
||||||
|
.whenHappened(PrinterEvent.TURN_OFF, l -> {
|
||||||
|
if (l.switchTo(PrinterState.STOPPING))
|
||||||
|
l.switchTo(PrinterState.STOPPED);
|
||||||
|
})
|
||||||
.concurrent()
|
.concurrent()
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
System.out.println(stateMachine.compareAndSet(PrinterState.IDLE, PrinterState.STOPPING, true));
|
stateMachine.publish(PrinterEvent.TURN_OFF);
|
||||||
|
|
||||||
stateMachine.close();
|
stateMachine.close();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user