类 Inverter<E>
java.lang.Object
cn.wjybxx.btree.Task<E>
cn.wjybxx.btree.Decorator<E>
cn.wjybxx.btree.decorator.Inverter<E>
反转装饰器,它用于反转子节点的执行结果。
如果被装饰的任务失败,它将返回成功;
如果被装饰的任务成功,它将返回失败;
如果被装饰的任务取消,它将返回取消。
- 作者:
- wjybxx date - 2023/11/26
-
字段概要
-
构造器概要
构造器 -
方法概要
修饰符和类型方法说明protected voidexecute()Task的心跳方法,在Task进入完成状态之前会反复执行。protected voidonChildCompleted(Task<E> child) 子节点进入完成状态 1.避免方法数太多,实现类测试task的status即可 2.Task.getNormalizedStatus()有助于switch测试 3.task可能是取消状态,甚至可能没运行过直接失败(前置条件失败) 4.钩子任务和guard不会调用该方法 5.Task.isExecuting()有助于检测冲突,减少调用栈深度 6.同一子节点连续通知的情况下,completed的逻辑应当覆盖Task.onChildRunning(Task)的影响。从类继承的方法 cn.wjybxx.btree.Decorator
addChildImpl, childStream, getChild, getChild, getChildCount, indexChild, onChildRunning, onEventImpl, removeChildImpl, setChild, setChildImpl, stopRunningChildren从类继承的方法 cn.wjybxx.btree.Task
addChild, beforeEnter, canHandleEvent, checkCancel, enter, exit, getBlackboard, getCancelToken, getControl, getControlData, getCurFrame, getEnterFrame, getEntity, getEntryBlackboard, getExitFrame, getFlags, getGuard, getNormalizedStatus, getPrevStatus, getReentryId, getRunFrames, getSharedProps, getStatus, getTaskEntry, isAutoCheckCancel, isAutoListenCancel, isAutoResetChildren, isCancelled, isCompleted, isDisableDelayNotify, isDisableEnterExecute, isExecuteTriggeredByEnter, isExecuting, isExited, isExitTriggeredByStop, isFailed, isFailedOrCancelled, isLocked, isReentered, isRunning, isStillborn, isSucceeded, lock, onCancelRequested, onEvent, removeAllChild, removeChild, removeChild, resetChildrenForRestart, resetForRestart, resetForRestart, setAutoCheckCancel, setAutoListenCancel, setAutoResetChildren, setBlackboard, setCancelled, setCancelToken, setChild, setCompleted, setControl, setControlData, setDisableDelayNotify, setDisableEnterExecute, setEnterFrame, setExitFrame, setFailed, setFlags, setGuard, setGuardFailed, setSharedProps, setSuccess, stop, stop, stopSafely, template_checkGuard, template_execute, template_runChild, template_runChildDirectly, template_runHook, template_runHookDirectly, tryLock, unlock, unsetControl
-
构造器详细资料
-
Inverter
public Inverter() -
Inverter
-
-
方法详细资料
-
execute
protected void execute()从类复制的说明:TaskTask的心跳方法,在Task进入完成状态之前会反复执行。 1.可以根据Task.isExecuteTriggeredByEnter()判断是否是与Task.enter(int)连续执行的。 2.运行中可通过Task.setSuccess()、Task.setFailed(int)()}、Task.setCancelled()将自己更新为完成状态。 3.不建议直接调用该方法,而是通过模板方法运行。 -
onChildCompleted
从类复制的说明:Task子节点进入完成状态 1.避免方法数太多,实现类测试task的status即可 2.Task.getNormalizedStatus()有助于switch测试 3.task可能是取消状态,甚至可能没运行过直接失败(前置条件失败) 4.钩子任务和guard不会调用该方法 5.Task.isExecuting()有助于检测冲突,减少调用栈深度 6.同一子节点连续通知的情况下,completed的逻辑应当覆盖Task.onChildRunning(Task)的影响。 7.任何的回调和事件方法中都由用户自身检测取消信号- 指定者:
onChildCompleted在类中Task<E>
-