63 lines
1.2 KiB
Java
63 lines
1.2 KiB
Java
package org.warp.commonutils.functional;
|
|
|
|
import java.util.StringJoiner;
|
|
import java.util.concurrent.CancellationException;
|
|
|
|
public final class ConsumerResult {
|
|
|
|
private final boolean cancel;
|
|
|
|
private ConsumerResult(boolean cancel) {
|
|
this.cancel = cancel;
|
|
}
|
|
|
|
public static ConsumerResult cancelNext() {
|
|
return new ConsumerResult(true);
|
|
}
|
|
|
|
public static ConsumerResult result() {
|
|
return new ConsumerResult(false);
|
|
}
|
|
|
|
public boolean isCancelled() {
|
|
return cancel;
|
|
}
|
|
|
|
public void throwIfCancelled() {
|
|
if (cancel) {
|
|
throw new CancellationException("Operation cancelled");
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public boolean equals(Object o) {
|
|
if (this == o) {
|
|
return true;
|
|
}
|
|
if (o == null || getClass() != o.getClass()) {
|
|
return false;
|
|
}
|
|
|
|
ConsumerResult that = (ConsumerResult) o;
|
|
|
|
return cancel == that.cancel;
|
|
}
|
|
|
|
@Override
|
|
public int hashCode() {
|
|
return (cancel ? 1 : 0);
|
|
}
|
|
|
|
@Override
|
|
public String toString() {
|
|
return new StringJoiner(", ", ConsumerResult.class.getSimpleName() + "[", "]").add("cancel=" + cancel).toString();
|
|
}
|
|
|
|
public ConsumerResult or(ConsumerResult otherResult) {
|
|
if (otherResult.cancel) {
|
|
return otherResult;
|
|
}
|
|
return this;
|
|
}
|
|
}
|