diff options
| author | 2025-09-01 17:07:13 -0500 | |
|---|---|---|
| committer | 2025-09-01 21:05:21 -0500 | |
| commit | 1c949e01816441ae3a7286320b4a9371a50d241d (patch) | |
| tree | 6b8d38476631d199fedf6bf1a215b13c2dd7eac7 /core/src/main/java/dev/figboot | |
| parent | better exception handling for tasks (diff) | |
Diffstat (limited to 'core/src/main/java/dev/figboot')
| -rw-r--r-- | core/src/main/java/dev/figboot/launcher/core/Launcher.java | 24 | ||||
| -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.java | 8 | ||||
| -rw-r--r-- | core/src/main/java/dev/figboot/launcher/core/task/TaskConsumingCallable.java | 1 | ||||
| -rw-r--r-- | core/src/main/java/dev/figboot/launcher/core/task/TaskConsumingRunnable.java | 1 |
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 { |
