/** * Listener is always notified asynchronously using a dedicated notification thread pool so, care should * be taken to avoid leaking {@code this} when adding a listener in a constructor. Additionally, it is * possible notifications are observed out of order due to the asynchronous execution. */ public void addStateChangeListener(StateChangeListener<StageState> stateChangeListener) { stageState.addStateChangeListener(stateChangeListener); }
/** * Listener is always notified asynchronously using a dedicated notification thread pool so, care should * be taken to avoid leaking {@code this} when adding a listener in a constructor. Additionally, it is * possible notifications are observed out of order due to the asynchronous execution. */ public void addStateChangeListener(StateChangeListener<QueryState> stateChangeListener) { queryState.addStateChangeListener(stateChangeListener); }
@Override public void addStateChangeListener(StateChangeListener<BufferState> stateChangeListener) { state.addStateChangeListener(stateChangeListener); }
@Override public void addStateChangeListener(StateChangeListener<BufferState> stateChangeListener) { state.addStateChangeListener(stateChangeListener); }
/** * Listener is always notified asynchronously using a dedicated notification thread pool so, care should * be taken to avoid leaking {@code this} when adding a listener in a constructor. Additionally, it is * possible notifications are observed out of order due to the asynchronous execution. */ public void addStateChangeListener(StateChangeListener<QueryState> stateChangeListener) { queryState.addStateChangeListener(stateChangeListener); }
@Override public void addStateChangeListener(StateChangeListener<BufferState> stateChangeListener) { state.addStateChangeListener(stateChangeListener); }
/** * Listener is always notified asynchronously using a dedicated notification thread pool so, care should * be taken to avoid leaking {@code this} when adding a listener in a constructor. Additionally, it is * possible notifications are observed out of order due to the asynchronous execution. */ public void addStateChangeListener(StateChangeListener<TaskState> stateChangeListener) { taskState.addStateChangeListener(stateChangeListener); }
/** * Listener is always notified asynchronously using a dedicated notification thread pool so, care should * be taken to avoid leaking {@code this} when adding a listener in a constructor. Additionally, it is * possible notifications are observed out of order due to the asynchronous execution. */ public void addStateChangeListener(StateMachine.StateChangeListener<TaskStatus> stateChangeListener) { taskStatus.addStateChangeListener(stateChangeListener); }
@Override public void addStateChangeListener(StateChangeListener<BufferState> stateChangeListener) { state.addStateChangeListener(stateChangeListener); }
@Override public void addStateChangeListener(StateChangeListener<BufferState> stateChangeListener) { state.addStateChangeListener(stateChangeListener); }
@Override public void addStateChangeListener(StateChangeListener<BufferState> stateChangeListener) { state.addStateChangeListener(stateChangeListener); }
/** * Listener is always notified asynchronously using a dedicated notification thread pool so, care should * be taken to avoid leaking {@code this} when adding a listener in a constructor. Additionally, it is * possible notifications are observed out of order due to the asynchronous execution. */ public void addStateChangeListener(StateChangeListener<StageState> stateChangeListener) { stageState.addStateChangeListener(stateChangeListener); }
@Override public void addStateChangeListener(StateChangeListener<BufferState> stateChangeListener) { state.addStateChangeListener(stateChangeListener); }
/** * Listener is always notified asynchronously using a dedicated notification thread pool so, care should * be taken to avoid leaking {@code this} when adding a listener in a constructor. Additionally, it is * possible notifications are observed out of order due to the asynchronous execution. */ public void addStateChangeListener(StateMachine.StateChangeListener<TaskStatus> stateChangeListener) { taskStatus.addStateChangeListener(stateChangeListener); }
@Override public void addStateChangeListener(StateChangeListener<BufferState> stateChangeListener) { state.addStateChangeListener(stateChangeListener); }
/** * Listener is always notified asynchronously using a dedicated notification thread pool so, care should * be taken to avoid leaking {@code this} when adding a listener in a constructor. Additionally, it is * possible notifications are observed out of order due to the asynchronous execution. */ public void addStateChangeListener(StateChangeListener<TaskState> stateChangeListener) { taskState.addStateChangeListener(stateChangeListener); }
public TaskStateMachine(TaskId taskId, Executor executor) { this.taskId = requireNonNull(taskId, "taskId is null"); taskState = new StateMachine<>("task " + taskId, executor, TaskState.RUNNING, TERMINAL_TASK_STATES); taskState.addStateChangeListener(new StateChangeListener<TaskState>() { @Override public void stateChanged(TaskState newState) { log.debug("Task %s is %s", taskId, newState); } }); }
public TaskStateMachine(TaskId taskId, Executor executor) { this.taskId = requireNonNull(taskId, "taskId is null"); taskState = new StateMachine<>("task " + taskId, executor, TaskState.RUNNING, TERMINAL_TASK_STATES); taskState.addStateChangeListener(new StateChangeListener<TaskState>() { @Override public void stateChanged(TaskState newState) { log.debug("Task %s is %s", taskId, newState); } }); }
/** * Add a listener for the final query info. This notification is guaranteed to be fired only once. * Listener is always notified asynchronously using a dedicated notification thread pool so, care should * be taken to avoid leaking {@code this} when adding a listener in a constructor. */ public void addQueryInfoStateChangeListener(StateChangeListener<QueryInfo> stateChangeListener) { AtomicBoolean done = new AtomicBoolean(); StateChangeListener<Optional<QueryInfo>> fireOnceStateChangeListener = finalQueryInfo -> { if (finalQueryInfo.isPresent() && done.compareAndSet(false, true)) { stateChangeListener.stateChanged(finalQueryInfo.get()); } }; finalQueryInfo.addStateChangeListener(fireOnceStateChangeListener); }
/** * Add a listener for the final query info. This notification is guaranteed to be fired only once. * Listener is always notified asynchronously using a dedicated notification thread pool so, care should * be taken to avoid leaking {@code this} when adding a listener in a constructor. */ public void addQueryInfoStateChangeListener(StateChangeListener<QueryInfo> stateChangeListener) { AtomicBoolean done = new AtomicBoolean(); StateChangeListener<Optional<QueryInfo>> fireOnceStateChangeListener = finalQueryInfo -> { if (finalQueryInfo.isPresent() && done.compareAndSet(false, true)) { stateChangeListener.stateChanged(finalQueryInfo.get()); } }; finalQueryInfo.addStateChangeListener(fireOnceStateChangeListener); }