mirror of
https://github.com/tommyskeff/futur4j.git
synced 2026-01-18 07:16:45 +00:00
make other modules compatible with 1.2.0
This commit is contained in:
@@ -14,6 +14,7 @@ repositories {
|
||||
|
||||
dependencies {
|
||||
implementation("org.jetbrains:annotations:24.1.0")
|
||||
implementation("org.slf4j:slf4j-api:2.0.9")
|
||||
compileOnly(project(mapOf("path" to ":futur-api")))
|
||||
testImplementation(platform("org.junit:junit-bom:5.9.1"))
|
||||
testImplementation("org.junit.jupiter:junit-jupiter")
|
||||
|
||||
@@ -33,17 +33,17 @@ public class ExclusiveThreadPoolScheduler implements Scheduler {
|
||||
|
||||
@Override
|
||||
public void runAsync(@NotNull Runnable task, @NotNull ExecutorTrace trace) {
|
||||
executor.submit(wrapExceptions(task, trace));
|
||||
executor.submit(Scheduler.wrapExceptions(task, trace));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void runDelayedAsync(@NotNull Runnable task, long delay, @NotNull TimeUnit unit, @NotNull ExecutorTrace trace) {
|
||||
executor.schedule(wrapExceptions(task, trace), delay, unit);
|
||||
executor.schedule(Scheduler.wrapExceptions(task, trace), delay, unit);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void runRepeatingAsync(@NotNull Runnable task, long interval, @NotNull TimeUnit unit, @NotNull ExecutorTrace trace) {
|
||||
executor.scheduleAtFixedRate(wrapExceptions(task, trace), 0L, interval, unit);
|
||||
executor.scheduleAtFixedRate(Scheduler.wrapExceptions(task, trace), 0L, interval, unit);
|
||||
}
|
||||
|
||||
public @NotNull ScheduledExecutorService getExecutor() {
|
||||
|
||||
@@ -0,0 +1,35 @@
|
||||
package dev.tommyjs.futur.standalone;
|
||||
|
||||
import dev.tommyjs.futur.promise.AbstractPromise;
|
||||
import dev.tommyjs.futur.promise.PromiseFactory;
|
||||
import dev.tommyjs.futur.scheduler.Scheduler;
|
||||
import org.slf4j.Logger;
|
||||
|
||||
public class PooledPromise<T> extends AbstractPromise<T> {
|
||||
|
||||
private final Scheduler scheduler;
|
||||
private final Logger logger;
|
||||
private final PromiseFactory factory;
|
||||
|
||||
public PooledPromise(Scheduler scheduler, Logger logger, PromiseFactory factory) {
|
||||
this.scheduler = scheduler;
|
||||
this.logger = logger;
|
||||
this.factory = factory;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Scheduler getScheduler() {
|
||||
return scheduler;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Logger getLogger() {
|
||||
return logger;
|
||||
}
|
||||
|
||||
@Override
|
||||
public PromiseFactory getFactory() {
|
||||
return factory;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,45 @@
|
||||
package dev.tommyjs.futur.standalone;
|
||||
|
||||
import dev.tommyjs.futur.promise.AbstractPromise;
|
||||
import dev.tommyjs.futur.promise.Promise;
|
||||
import dev.tommyjs.futur.promise.PromiseCompletion;
|
||||
import dev.tommyjs.futur.promise.PromiseFactory;
|
||||
import dev.tommyjs.futur.scheduler.Scheduler;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.slf4j.Logger;
|
||||
|
||||
public class PooledPromiseFactory implements PromiseFactory {
|
||||
|
||||
private final Scheduler scheduler;
|
||||
private final Logger logger;
|
||||
|
||||
public PooledPromiseFactory(Scheduler scheduler, Logger logger) {
|
||||
this.scheduler = scheduler;
|
||||
this.logger = logger;
|
||||
}
|
||||
|
||||
@Override
|
||||
public @NotNull <T> Promise<T> resolve(T value) {
|
||||
AbstractPromise<T> promise = new PooledPromise<>(scheduler, logger, this);
|
||||
promise.complete(value);
|
||||
return promise;
|
||||
}
|
||||
|
||||
@Override
|
||||
public @NotNull <T> Promise<T> unresolved() {
|
||||
return new PooledPromise<>(scheduler, logger, this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public @NotNull <T> Promise<T> error(Throwable error) {
|
||||
AbstractPromise<T> promise = new PooledPromise<>(scheduler, logger, this);
|
||||
promise.completeExceptionally(error);
|
||||
return promise;
|
||||
}
|
||||
|
||||
@Override
|
||||
public @NotNull Promise<Void> start() {
|
||||
return resolve(null);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -20,32 +20,32 @@ public class ThreadPoolScheduler implements Scheduler {
|
||||
|
||||
@Override
|
||||
public void runSync(@NotNull Runnable task, @NotNull ExecutorTrace trace) {
|
||||
syncExecutor.submit(wrapExceptions(task, trace));
|
||||
syncExecutor.submit(Scheduler.wrapExceptions(task, trace));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void runDelayedSync(@NotNull Runnable task, long delay, @NotNull TimeUnit unit, @NotNull ExecutorTrace trace) {
|
||||
syncExecutor.schedule(wrapExceptions(task, trace), delay, unit);
|
||||
syncExecutor.schedule(Scheduler.wrapExceptions(task, trace), delay, unit);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void runRepeatingSync(@NotNull Runnable task, long interval, @NotNull TimeUnit unit, @NotNull ExecutorTrace trace) {
|
||||
syncExecutor.scheduleAtFixedRate(wrapExceptions(task, trace), 0L, interval, unit);
|
||||
syncExecutor.scheduleAtFixedRate(Scheduler.wrapExceptions(task, trace), 0L, interval, unit);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void runAsync(@NotNull Runnable task, @NotNull ExecutorTrace trace) {
|
||||
asyncExecutor.submit(wrapExceptions(task, trace));
|
||||
asyncExecutor.submit(Scheduler.wrapExceptions(task, trace));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void runDelayedAsync(@NotNull Runnable task, long delay, @NotNull TimeUnit unit, @NotNull ExecutorTrace trace) {
|
||||
asyncExecutor.schedule(wrapExceptions(task, trace), delay, unit);
|
||||
asyncExecutor.schedule(Scheduler.wrapExceptions(task, trace), delay, unit);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void runRepeatingAsync(@NotNull Runnable task, long interval, @NotNull TimeUnit unit, @NotNull ExecutorTrace trace) {
|
||||
asyncExecutor.scheduleAtFixedRate(wrapExceptions(task, trace), 0L, interval, unit);
|
||||
asyncExecutor.scheduleAtFixedRate(Scheduler.wrapExceptions(task, trace), 0L, interval, unit);
|
||||
}
|
||||
|
||||
public @NotNull ScheduledExecutorService getSyncExecutor() {
|
||||
|
||||
Reference in New Issue
Block a user