
com.fluxtion.runtime.callback.CallbackDispatcherImpl Maven / Gradle / Ivy
/*
* SPDX-FileCopyrightText: © 2024 Gregory Higgins
* SPDX-License-Identifier: AGPL-3.0-only
*/
package com.fluxtion.runtime.callback;
import com.fluxtion.runtime.node.NamedNode;
import lombok.ToString;
import java.util.ArrayDeque;
import java.util.Deque;
import java.util.Iterator;
import java.util.function.BooleanSupplier;
import java.util.function.Supplier;
@ToString
public class CallbackDispatcherImpl implements EventProcessorCallbackInternal, NamedNode, DirtyStateMonitor {
public InternalEventProcessor eventProcessor;
Deque> myStack = new ArrayDeque<>();
private boolean dispatching = false;
@Override
public void dispatchQueuedCallbacks() {
if (eventProcessor == null) {
//System.out.println("no event processor registered cannot publish callback");
} else {
while (!myStack.isEmpty()) {
dispatching = true;
Supplier callBackItem = myStack.peekFirst();
if (!callBackItem.get()) {
myStack.remove(callBackItem);
}
}
}
dispatching = false;
}
@Override
public void fireCallback(int id) {
SingleCallBackWrapper
© 2015 - 2025 Weber Informatics LLC | Privacy Policy