X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=bundles%2Forg.simantics.simulator.toolkit.db%2Fsrc%2Forg%2Fsimantics%2Fsimulator%2Ftoolkit%2Fdb%2FExperimentStateExternalRead.java;fp=bundles%2Forg.simantics.simulator.toolkit.db%2Fsrc%2Forg%2Fsimantics%2Fsimulator%2Ftoolkit%2Fdb%2FExperimentStateExternalRead.java;h=ad2b2c4c87ca077d6f08cf1a1717d6528680eef6;hb=14a4f7a9d486fba5be815e511fb2a497fca4eb70;hp=0000000000000000000000000000000000000000;hpb=751ee12501d220832b672dd433655a4d65806fd9;p=simantics%2Fplatform.git diff --git a/bundles/org.simantics.simulator.toolkit.db/src/org/simantics/simulator/toolkit/db/ExperimentStateExternalRead.java b/bundles/org.simantics.simulator.toolkit.db/src/org/simantics/simulator/toolkit/db/ExperimentStateExternalRead.java new file mode 100644 index 000000000..ad2b2c4c8 --- /dev/null +++ b/bundles/org.simantics.simulator.toolkit.db/src/org/simantics/simulator/toolkit/db/ExperimentStateExternalRead.java @@ -0,0 +1,42 @@ +package org.simantics.simulator.toolkit.db; + +import org.simantics.db.ReadGraph; +import org.simantics.db.common.request.ParametrizedPrimitiveRead; +import org.simantics.db.exception.RuntimeDatabaseException; +import org.simantics.db.procedure.Listener; + +/** + * @author Antti Villberg + * @since 1.34.0 + */ +public class ExperimentStateExternalRead extends ParametrizedPrimitiveRead { + + private int value = 0; + private Listener listener = null; + + public ExperimentStateExternalRead(Object experiment) { + super(experiment); + } + + @Override + public void register(ReadGraph graph, Listener procedure) { + procedure.execute(value); + if (procedure.isDisposed()) + return; + if (listener != null) + throw new RuntimeDatabaseException("Internal error"); + listener = procedure; + } + + @Override + public void unregistered() { + listener = null; + } + + public void fire() { + value++; + if (listener != null) + listener.execute(value); + } + +} \ No newline at end of file