summaryrefslogtreecommitdiffstats
path: root/core/src/main
diff options
context:
space:
mode:
Diffstat (limited to 'core/src/main')
-rw-r--r--core/src/main/java/dev/figboot/launcher/core/Launcher.java24
-rw-r--r--core/src/main/java/dev/figboot/launcher/core/task/LauncherTaskExecutor.java (renamed from core/src/main/java/dev/figboot/launcher/core/task/LauncherExecutorService.java)4
-rw-r--r--core/src/main/java/dev/figboot/launcher/core/task/Task.java8
-rw-r--r--core/src/main/java/dev/figboot/launcher/core/task/TaskConsumingCallable.java1
-rw-r--r--core/src/main/java/dev/figboot/launcher/core/task/TaskConsumingRunnable.java1
5 files changed, 30 insertions, 8 deletions
diff --git a/core/src/main/java/dev/figboot/launcher/core/Launcher.java b/core/src/main/java/dev/figboot/launcher/core/Launcher.java
index bc5b74e..9b9730b 100644
--- a/core/src/main/java/dev/figboot/launcher/core/Launcher.java
+++ b/core/src/main/java/dev/figboot/launcher/core/Launcher.java
@@ -1,25 +1,37 @@
package dev.figboot.launcher.core;
-import dev.figboot.launcher.core.task.LauncherExecutorService;
-import dev.figboot.launcher.core.task.TaskUtil;
+import dev.figboot.launcher.core.task.LauncherTaskExecutor;
+import dev.figboot.launcher.core.task.Task;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import java.util.concurrent.CompletableFuture;
import java.util.concurrent.Future;
-import java.util.concurrent.ScheduledExecutorService;
public class Launcher {
private static final Logger LOGGER = LoggerFactory.getLogger(Launcher.class);
protected final LauncherInterfaceAccess iface;
- protected final ScheduledExecutorService service;
+ protected final LauncherTaskExecutor service;
public Launcher(LauncherInterfaceAccess iface) {
this.iface = iface;
- service = new LauncherExecutorService(iface);
+ service = new LauncherTaskExecutor(iface);
}
public Future<?> loadVersions() {
- return service.submit(TaskUtil.taskRunnable((task) -> task.setLabel("sussy")));
+ Task task = iface.createTask("somelabel");
+ CompletableFuture.completedFuture(task)
+ .thenApplyAsync(t -> /* do something */ null, service)
+ .whenComplete((out, t) -> {
+ try {
+ if (t != null) {
+ task.unhandled(t);
+ }
+ } finally {
+ task.complete();
+ }
+ });
+
}
}
diff --git a/core/src/main/java/dev/figboot/launcher/core/task/LauncherExecutorService.java b/core/src/main/java/dev/figboot/launcher/core/task/LauncherTaskExecutor.java
index 6c7f2be..ddf591e 100644
--- a/core/src/main/java/dev/figboot/launcher/core/task/LauncherExecutorService.java
+++ b/core/src/main/java/dev/figboot/launcher/core/task/LauncherTaskExecutor.java
@@ -6,10 +6,10 @@ import java.util.concurrent.Callable;
import java.util.concurrent.RunnableScheduledFuture;
import java.util.concurrent.ScheduledThreadPoolExecutor;
-public class LauncherExecutorService extends ScheduledThreadPoolExecutor {
+public class LauncherTaskExecutor extends ScheduledThreadPoolExecutor {
private final LauncherInterfaceAccess iface;
- public LauncherExecutorService(LauncherInterfaceAccess iface) {
+ public LauncherTaskExecutor(LauncherInterfaceAccess iface) {
super(4);
this.iface = iface;
}
diff --git a/core/src/main/java/dev/figboot/launcher/core/task/Task.java b/core/src/main/java/dev/figboot/launcher/core/task/Task.java
index 57423d1..f96099a 100644
--- a/core/src/main/java/dev/figboot/launcher/core/task/Task.java
+++ b/core/src/main/java/dev/figboot/launcher/core/task/Task.java
@@ -1,7 +1,15 @@
package dev.figboot.launcher.core.task;
public interface Task {
+ // should set the state of this task from "Waiting" to "Running"
+ void notifyStart();
+
+ // should change the displayed label of this task
void setLabel(String label);
+
+ // should display some kind of warning to the user about the this task
void unhandled(Throwable t);
+
+ // should mark this task as "Completed"
void complete();
}
diff --git a/core/src/main/java/dev/figboot/launcher/core/task/TaskConsumingCallable.java b/core/src/main/java/dev/figboot/launcher/core/task/TaskConsumingCallable.java
index 4835105..a600433 100644
--- a/core/src/main/java/dev/figboot/launcher/core/task/TaskConsumingCallable.java
+++ b/core/src/main/java/dev/figboot/launcher/core/task/TaskConsumingCallable.java
@@ -23,6 +23,7 @@ class TaskConsumingCallable<V> implements Callable<V> {
if (!taskAssigned) throw new IllegalStateException("task not assigned");
try {
+ task.notifyStart();
return delegate.call(task);
} catch (Throwable t) {
try {
diff --git a/core/src/main/java/dev/figboot/launcher/core/task/TaskConsumingRunnable.java b/core/src/main/java/dev/figboot/launcher/core/task/TaskConsumingRunnable.java
index 46824c5..5ed3057 100644
--- a/core/src/main/java/dev/figboot/launcher/core/task/TaskConsumingRunnable.java
+++ b/core/src/main/java/dev/figboot/launcher/core/task/TaskConsumingRunnable.java
@@ -23,6 +23,7 @@ class TaskConsumingRunnable implements Runnable {
if (!taskAssigned) throw new IllegalStateException("task not assigned");
try {
+ task.notifyStart();
delegate.accept(task);
} catch (Throwable t) {
try {