
io.github.vipcxj.jasync.ng.runtime.promise.PortalPromise Maven / Gradle / Ivy
package io.github.vipcxj.jasync.ng.runtime.promise;
import io.github.vipcxj.jasync.ng.runtime.schedule.PortalTask;
import io.github.vipcxj.jasync.ng.spec.JContext;
import io.github.vipcxj.jasync.ng.spec.JPortal;
import io.github.vipcxj.jasync.ng.spec.JPromise;
import io.github.vipcxj.jasync.ng.spec.functional.JAsyncPortalTask1;
import io.github.vipcxj.jasync.ng.spec.functional.TriConsumer;
import java.util.function.BiConsumer;
public class PortalPromise extends GeneralPromise implements JPortal {
public PortalPromise(JAsyncPortalTask1 jumperTask) {
this(new PortalTask<>(jumperTask), true);
}
private PortalPromise(PortalTask portalTask, boolean bind) {
super(portalTask);
if (bind) {
portalTask.bindPortal(this);
}
}
@Override
public JPromise jump() {
return new Portal<>(this, (PortalTask) task);
}
@Override
public void cancel() {
super.cancel();
}
public static class Portal extends PortalPromise {
private final PortalPromise source;
public Portal(PortalPromise source, PortalTask portalTask) {
super(portalTask, false);
this.source = source;
}
@Override
public JPromise jump() {
return new Portal<>(source, (PortalTask) task);
}
@Override
public void resolve(T result, JContext context) {
source.resolve(result, context);
}
@Override
public void reject(Throwable error, JContext context) {
source.reject(error, context);
}
@Override
public JPromise onSuccess(BiConsumer callback) {
return this;
}
@Override
public JPromise onError(BiConsumer callback) {
return this;
}
@Override
public JPromise onFinally(TriConsumer callback) {
return this;
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy