From ed329553e5ccd26c481582fae654f1674fd083a3 Mon Sep 17 00:00:00 2001 From: Matthias Jaros Date: Sun, 2 Aug 2026 19:07:52 +0200 Subject: Added PollState to have a wrapper instead of returning null --- src/main/java/com/it_jaros/jscanner/PollState.java | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 src/main/java/com/it_jaros/jscanner/PollState.java (limited to 'src/main/java/com/it_jaros/jscanner/PollState.java') 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 { + record Success(T value) implements PollState {} + record Failure(Throwable error) implements PollState {} + record Unavailable() implements PollState {} +} -- cgit v1.3.1