summaryrefslogtreecommitdiff
path: root/src/main/java/com/it_jaros/jscanner/scan/engine/PollState.java
diff options
context:
space:
mode:
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> {}
+}