summaryrefslogtreecommitdiff
path: root/src/main/java/com/it_jaros/jscanner/scan/engine/PollState.java
diff options
context:
space:
mode:
authorGravatar Matthias Jaros <jarlucmat@mailbox.org>2026-08-12 13:24:27 +0200
committerGravatar Matthias Jaros <jarlucmat@mailbox.org>2026-08-12 13:50:46 +0200
commitff14e0fc4e3fe4f5b8a67640d28850064661d7ab (patch)
treef141a2d34d902d344207cfbbc6ac614ec1b3840d /src/main/java/com/it_jaros/jscanner/scan/engine/PollState.java
parent540b09b1a019f95a9322a6d19e8928369bb20fcb (diff)
Major refactoring of package structure
Diffstat (limited to 'src/main/java/com/it_jaros/jscanner/scan/engine/PollState.java')
-rw-r--r--src/main/java/com/it_jaros/jscanner/scan/engine/PollState.java13
1 files changed, 13 insertions, 0 deletions
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<T> {
+ record Success<T>(T value) implements PollState<T> {}
+ record Failure<T>(Throwable error) implements PollState<T> {}
+ record Unavailable<T>() implements PollState<T> {}
+}