From ff14e0fc4e3fe4f5b8a67640d28850064661d7ab Mon Sep 17 00:00:00 2001 From: Matthias Jaros Date: Wed, 12 Aug 2026 13:24:27 +0200 Subject: Major refactoring of package structure --- .../java/com/it_jaros/jscanner/scan/engine/PollState.java | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 src/main/java/com/it_jaros/jscanner/scan/engine/PollState.java (limited to 'src/main/java/com/it_jaros/jscanner/scan/engine/PollState.java') diff --git a/src/main/java/com/it_jaros/jscanner/scan/engine/PollState.java b/src/main/java/com/it_jaros/jscanner/scan/engine/PollState.java new file mode 100644 index 0000000..54ec767 --- /dev/null +++ b/src/main/java/com/it_jaros/jscanner/scan/engine/PollState.java @@ -0,0 +1,13 @@ +package com.it_jaros.jscanner.scan.engine; + +/** + * A sealed interface representing the three possible outcomes of a CompletionService + * poll operation: successful result, task failure, or not ready yet. + * Makes error handling explicit — Failure and Unavailable are distinct and compile-time + * required to handle via exhaustiveness checking in switch statements. + */ +public sealed interface PollState { + record Success(T value) implements PollState {} + record Failure(Throwable error) implements PollState {} + record Unavailable() implements PollState {} +} -- cgit v1.3.1