package org.infinispan.server.hotrod;
import java.util.HashMap;
import java.util.Map;
/**
* Hot Rod operation possible status outcomes.
*
* @author Galder ZamarreƱo
* @since 4.1
*/
public enum OperationStatus {
// TODO: need to get codes
Success(0x00),
OperationNotExecuted(0x01),
KeyDoesNotExist(0x02),
SuccessWithPrevious(0x03),
NotExecutedWithPrevious(0x04),
InvalidIteration(0x05),
SuccessCompat(0x06),
SuccessWithPreviousCompat(0x07),
NotExecutedWithPreviousCompat(0x08),
InvalidMagicOrMsgId(0x81),
UnknownOperation(0x82),
UnknownVersion(0x83), // todo: test
ParseError(0x84), // todo: test
ServerError(0x85), // todo: test
OperationTimedOut(0x86), // todo: test
NodeSuspected(0x87),
IllegalLifecycleState(0x88),;
private final static Map<Byte, OperationStatus> intMap = new HashMap<>();
static {
for (OperationStatus status : OperationStatus.values()) {
intMap.put(status.code, status);
}
}
private final byte code;
OperationStatus(int code) {
this.code = (byte) code;
}
public byte getCode() {
return code;
}
public static OperationStatus fromCode(byte code) {
return intMap.get(code);
}
static OperationStatus withCompatibility(OperationStatus st, boolean isCompatibilityEnabled) {
if (isCompatibilityEnabled) {
switch (st) {
case Success:
return SuccessCompat;
case SuccessWithPrevious:
return SuccessWithPreviousCompat;
case NotExecutedWithPrevious:
return NotExecutedWithPreviousCompat;
default:
return st;
}
} else return st;
}
}