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

io.github.vipcxj.jasync.ng.runtime.promise.PromiseSupport Maven / Gradle / Ivy

package io.github.vipcxj.jasync.ng.runtime.promise;

import com.google.auto.service.AutoService;
import io.github.vipcxj.jasync.ng.runtime.concurrent.ReentrantReadWriteLock;
import io.github.vipcxj.jasync.ng.runtime.schedule.*;
import io.github.vipcxj.jasync.ng.spec.*;
import io.github.vipcxj.jasync.ng.spec.functional.JAsyncPortalTask1;
import io.github.vipcxj.jasync.ng.spec.spi.JPromiseSupport;

import java.util.List;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.function.BiConsumer;

@AutoService(JPromiseSupport.class)
public class PromiseSupport implements JPromiseSupport {

    private static final AtomicInteger CURRENT_ID = new AtomicInteger();

    @Override
    public  JPromise just(T value) {
        return new ValuePromise<>(value);
    }

    @Override
    public  JPromise error(Throwable error) {
        return new ErrorPromise<>(error);
    }

    @Override
    public JPromise sleep(long time, TimeUnit unit) {
        return new GeneralPromise<>(new DelayTask(time, unit));
    }

    @Override
    public  JPromise portal(JAsyncPortalTask1 task) {
        return new PortalPromise<>(task);
    }

    @Override
    public  JPromise any(List> promises) {
        return new GeneralPromise<>(new AnyPromiseTask<>(promises));
    }

    @Override
    public  JPromise race(List> promises) {
        return new GeneralPromise<>(new RacePromiseTask<>(promises));
    }

    @Override
    public  JPromise> all(List> promises) {
        return new GeneralPromise<>(new AllPromisesTask<>(promises));
    }

    @Override
    public  JPromise create(BiConsumer, JContext> handler) {
        return new GeneralPromise<>(new LazyTask<>(handler));
    }

    @Override
    public  JPromise generate(BiConsumer, JContext> handler) {
        return new GeneralPromise<>(new ImmediateTask<>(handler));
    }

    @Override
    public  JPromiseTrigger createTrigger() {
        return new PromiseTrigger<>();
    }

    @Override
    public int generateId() {
        return CURRENT_ID.getAndIncrement();
    }

    @Override
    public JAsyncReadWriteLock readWriteLock() {
        return new ReentrantReadWriteLock();
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy