summaryrefslogtreecommitdiff
path: root/src/main/java/com/it_jaros/jscanner/PollState.java
diff options
context:
space:
mode:
authorGravatar Matthias Jaros <jarlucmat@mailbox.org>2026-08-02 19:07:52 +0200
committerGravatar Matthias Jaros <jarlucmat@mailbox.org>2026-08-02 19:13:16 +0200
commited329553e5ccd26c481582fae654f1674fd083a3 (patch)
tree5901162c9e9450a437382673e7084ab585341faf /src/main/java/com/it_jaros/jscanner/PollState.java
parentb827ce8853202664091f9fcc53b75d4a361d6a8b (diff)
Added PollState to have a wrapper instead of returning null
Diffstat (limited to 'src/main/java/com/it_jaros/jscanner/PollState.java')
-rw-r--r--src/main/java/com/it_jaros/jscanner/PollState.java13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/main/java/com/it_jaros/jscanner/PollState.java b/src/main/java/com/it_jaros/jscanner/PollState.java
new file mode 100644
index 0000000..474c055
--- /dev/null
+++ b/src/main/java/com/it_jaros/jscanner/PollState.java
@@ -0,0 +1,13 @@
+package com.it_jaros.jscanner;
+
+/**
+ * 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> {}
+}