package com.ripple.core.serialized.enums;
import com.ripple.core.fields.Type;
import com.ripple.core.serialized.BinaryParser;
import com.ripple.core.serialized.BytesSink;
import com.ripple.core.serialized.SerializedType;
import com.ripple.core.serialized.TypeTranslator;
import com.ripple.encodings.common.B16;
import java.util.TreeMap;
public enum EngineResult implements SerializedType
{
telLOCAL_ERROR(-399, "Local failure."),
telBAD_DOMAIN (-398, "Domain too long."),
telBAD_PATH_COUNT (-397, "Malformed: Too many paths."),
telBAD_PUBLIC_KEY (-396, "Public key too long."),
telFAILED_PROCESSING (-395, "Failed to correctly process transaction."),
telINSUF_FEE_P (-394, "Fee insufficient."),
telNO_DST_PARTIAL (-393, "Partial payment to create account not allowed."),
temMALFORMED (-299, "Malformed transaction."),
temBAD_AMOUNT (-298, "Can only send positive amounts."),
temBAD_AUTH_MASTER (-297, "Auth for unclaimed account needs correct master key."),
temBAD_CURRENCY (-296, "Malformed: Bad currency."),
temBAD_EXPIRATION (-295, "Malformed: Bad expiration."),
temBAD_FEE (-294, "Invalid fee, negative or not XRP."),
temBAD_ISSUER (-293, "Malformed: Bad issuer."),
temBAD_LIMIT (-292, "Limits must be non-negative."),
temBAD_OFFER (-291, "Malformed: Bad offer."),
temBAD_PATH (-290, "Malformed: Bad path."),
temBAD_PATH_LOOP (-289, "Malformed: Loop in path."),
temBAD_SEND_XRP_LIMIT (-288, "Malformed: Limit quality is not allowed for XRP to XRP."),
temBAD_SEND_XRP_MAX (-287, "Malformed: Send max is not allowed for XRP to XRP."),
temBAD_SEND_XRP_NO_DIRECT (-286, "Malformed: No Ripple direct is not allowed for XRP to XRP."),
temBAD_SEND_XRP_PARTIAL (-285, "Malformed: Partial payment is not allowed for XRP to XRP."),
temBAD_SEND_XRP_PATHS (-284, "Malformed: Paths are not allowed for XRP to XRP."),
temBAD_SEQUENCE (-283, "Malformed: Sequence is not in the past."),
temBAD_SIGNATURE (-282, "Malformed: Bad signature."),
temBAD_SRC_ACCOUNT (-281, "Malformed: Bad source account."),
temBAD_TRANSFER_RATE(-280, "Malformed: Bad transfer rate"),
temDST_IS_SRC (-279, "Destination may not be source."),
temDST_NEEDED (-278, "Destination not specified."),
temINVALID (-277, "The transaction is ill-formed."),
temINVALID_FLAG (-276, "The transaction has an invalid flag."),
temREDUNDANT (-275, "Sends same currency to self."),
temREDUNDANT_SEND_MAX (-274, "Send max is redundant."),
temRIPPLE_EMPTY (-273, "PathSet with no paths."),
temUNCERTAIN (-272, "In process of determining result. Never returned."),
temUNKNOWN (-271, "The transactions requires logic not implemented yet."),
tefFAILURE (-199, "Failed to apply."),
tefALREADY (-198, "The exact transaction was already in this ledger."),
tefBAD_ADD_AUTH (-197, "Not authorized to add account."),
tefBAD_AUTH (-196, "Transaction's public key is not authorized."),
tefBAD_LEDGER (-195, "Ledger in unexpected state."),
tefCREATED (-194, "Can't add an already created account."),
tefDST_TAG_NEEDED (-193, "Destination tag required."),
tefEXCEPTION (-192, "Unexpected program state."),
tefINTERNAL (-191, "Internal error."),
tefNO_AUTH_REQUIRED (-190, "Auth is not required."),
tefPAST_SEQ (-189, "This sequence number has already past."),
tefWRONG_PRIOR (-188, "tefWRONG_PRIOR"),
tefMASTER_DISABLED (-187, "tefMASTER_DISABLED"),
tefMAX_LEDGER (-186, "Ledger sequence too high."),
terRETRY (-99, "Retry transaction."),
terFUNDS_SPENT (-98, "Can't set password, password set funds already spent."),
terINSUF_FEE_B (-97, "AccountID balance can't pay fee."),
terNO_ACCOUNT (-96, "The source account does not exist."),
terNO_AUTH (-95, "Not authorized to hold IOUs."),
terNO_LINE (-94, "No such line."),
terOWNERS (-93, "Non-zero owner count."),
terPRE_SEQ (-92, "Missing/inapplicable prior transaction."),
terLAST (-91, "Process last."),
terNO_RIPPLE(-90, "Process last."),
tesSUCCESS (0, "The transaction was applied."),
tecCLAIM (100, "Fee claimed. Sequence used. No action."),
tecPATH_PARTIAL (101, "Path could not send full amount."),
tecUNFUNDED_ADD (102, "Insufficient XRP balance for WalletAdd."),
tecUNFUNDED_OFFER (103, "Insufficient balance to fund created offer."),
tecUNFUNDED_PAYMENT (104, "Insufficient XRP balance to send."),
tecFAILED_PROCESSING (105, "Failed to correctly process transaction."),
tecDIR_FULL (121, "Can not add entry to full directory."),
tecINSUF_RESERVE_LINE (122, "Insufficient reserve to add trust line."),
tecINSUF_RESERVE_OFFER (123, "Insufficient reserve to create offer."),
tecNO_DST (124, "Destination does not exist. Send XRP to create it."),
tecNO_DST_INSUF_XRP (125, "Destination does not exist. Too little XRP sent to create it."),
tecNO_LINE_INSUF_RESERVE (126, "No such line. Too little reserve to create it."),
tecNO_LINE_REDUNDANT (127, "Can't set non-existant line to default."),
tecPATH_DRY (128, "Path could not send partial amount."),
tecUNFUNDED (129, "One of _ADD, _OFFER, or _SEND. Deprecated."),
tecMASTER_DISABLED (130, "tecMASTER_DISABLED"),
tecNO_REGULAR_KEY (131, "tecNO_REGULAR_KEY"),
tecOWNERS (132, "tecOWNERS"),
tecNO_ISSUER(133, "Issuer account does not exist."),
tecNO_AUTH(134, "Not authorized to hold asset."),
tecNO_LINE(135, "No such line."),
tecINSUFF_FEE(136, "Insufficient balance to pay fee."),
tecFROZEN(137, "Asset is frozen."),
tecNO_TARGET(138, "Target account does not exist."),
tecNO_PERMISSION(139, "No permission to perform requested operation."),
tecNO_ENTRY(140, "No matching entry found."),
tecINSUFFICIENT_RESERVE(141, "Insufficient reserve to complete requested operation."),
tecNEED_MASTER_KEY(142, "The operation requires the use of the Master Key."),
tecDST_TAG_NEEDED(143, "A destination tag is required."),
tecINTERNAL(144, "An internal error has occurred during processing.");
public int asInteger() {
return ord;
}
@Override
public Type type() {
return Type.UInt8;
}
int ord;
String human;
EngineResult class_ = null;
EngineResult(int i, String s) {
human = s;
ord = i;
}
private static TreeMap<Integer, EngineResult> byCode;
static {
byCode = new TreeMap<Integer, EngineResult>();
for (EngineResult ter : EngineResult.values()) {
byCode.put(ter.ord, ter);
}
}
public static EngineResult fromNumber(Number i) {
return byCode.get(i.intValue());
}
/*Serialized Type implementation*/
@Override
public byte[] toBytes() {
return new byte[]{(byte) ord};
}
@Override
public void toBytesSink(BytesSink to) {
to.add((byte) ord);
}
@Override
public Object toJSON() {
return toString();
}
@Override
public String toHex() {
return B16.toString(toBytes());
}
public static class Translator extends TypeTranslator<EngineResult> {
@Override
public EngineResult fromParser(BinaryParser parser, Integer hint) {
return fromInteger(parser.readOneInt());
}
@Override
public EngineResult fromString(String value) {
return EngineResult.valueOf(value);
}
@Override
public EngineResult fromInteger(int integer) {
return fromNumber(integer);
}
}
public static Translator translate = new Translator();
// Result Classes
public static EngineResult resultClass(EngineResult result) {
if (result.ord >= telLOCAL_ERROR.ord && result.ord < temMALFORMED.ord) {
return telLOCAL_ERROR;
}
if (result.ord >= temMALFORMED.ord && result.ord < tefFAILURE.ord) {
return temMALFORMED;
}
if (result.ord >= tefFAILURE.ord && result.ord < terRETRY.ord) {
return tefFAILURE;
}
if (result.ord >= terRETRY.ord && result.ord < tesSUCCESS.ord) {
return terRETRY;
}
if (result.ord >= tesSUCCESS.ord && result.ord < tecCLAIM.ord) {
return tesSUCCESS;
}
return tecCLAIM;
}
public EngineResult resultClass() {
return class_;
}
static {
for (EngineResult engineResult : EngineResult.values()) {
engineResult.class_ = resultClass(engineResult);
}
}
}