
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