All Downloads are FREE. Search and download functionalities are using the official Maven repository.

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