package io.cattle.platform.engine.process;
import static io.cattle.platform.engine.process.ProcessResult.*;
public enum ExitReason {
ALREADY_DONE(SUCCESS),
CANCELED(ProcessResult.CANCELED, true),
DELAY(true, false, false, null),
STATE_CHANGED(false, false, false, null),
DONE(SUCCESS),
DELEGATE(false, false, false, null),
SCHEDULED(false, false, false, null),
PROCESS_ALREADY_IN_PROGRESS(false, false, false, null),
RESOURCE_BUSY(false, false, false, null),
RETRY_EXCEPTION(true),
UNKNOWN_EXCEPTION(true),
TIMEOUT(true),
CHAIN(SUCCESS);
boolean terminating;
boolean rethrow;
boolean error;
ProcessResult result;
private ExitReason() {
this(false, false, true, null);
}
private ExitReason(boolean rethrow) {
this(rethrow, false, true, null);
}
private ExitReason(ProcessResult result) {
this(false, true, false, result);
}
private ExitReason(ProcessResult result, boolean rethrow) {
this(rethrow, true, false, result);
}
private ExitReason(boolean rethrow, boolean terminating, boolean error, ProcessResult result) {
this.rethrow = rethrow;
this.terminating = terminating;
this.result = result;
this.error = error;
if (terminating && result == null) {
throw new IllegalStateException("All terminating ExitReasons must" + " have a result set");
}
}
public boolean isTerminating() {
return terminating;
}
public ProcessResult getResult() {
return result;
}
public boolean isRethrow() {
return rethrow;
}
public boolean isError() {
return error;
}
}