public static Class ForResult(TransactionEngineResult result) { if (result._ord >= telLOCAL_ERROR._starts && result._ord < temMALFORMED._starts) { return(telLOCAL_ERROR); } if (result._ord >= temMALFORMED._starts && result._ord < tefFAILURE._starts) { return(telLOCAL_ERROR); } if (result._ord >= tefFAILURE._starts && result._ord < terRETRY._starts) { return(telLOCAL_ERROR); } if (result._ord >= terRETRY._starts && result._ord < tesSUCCESS._starts) { return(telLOCAL_ERROR); } if (result._ord >= tesSUCCESS._starts && result._ord < tecCLAIMED._starts) { return(tesSUCCESS); } return(tecCLAIMED); }
public TransactionResult(JObject json, Source resultMessageSource) { Message = json; try { if (resultMessageSource == Source.transaction_subscription_notification) { EngineResult = TransactionEngineResult.FromString(json.GetValue("engine_result").ToObject<string>()); Validated = json.GetValue("validated").ToObject<bool>(); LedgerHash = Hash256.Translate.FromString(json.GetValue("ledger_hash").ToObject<string>()); LedgerIndex = new UInt32(json.GetValue("ledger_index").ToObject<long>()); JToken transaction; if (json.TryGetValue("transaction", out transaction)) { Txn = (Transaction) StObject.FromJObject(transaction.ToObject<JObject>()); Hash = Txn[Hash256.hash]; } JToken meta; if (json.TryGetValue("meta", out meta)) { Meta = (TransactionMeta)StObject.FromJObject(meta.ToObject<JObject>()); } } else if (resultMessageSource == Source.request_tx_result) { JToken validated; Validated = json.TryGetValue("validated", out validated) && validated.ToObject<bool>(); JToken meta; if (Validated && !json.TryGetValue("meta", out meta)) { throw new InvalidOperationException("It's validated, why doesn't it have meta??"); } if (Validated) { Meta = (TransactionMeta)StObject.FromJObject(json.GetValue("meta").ToObject<JObject>()); EngineResult = TransactionEngineResult.FromNumber(Meta[UInt8.TransactionResult]); Txn = (Transaction)StObject.FromJObject(json); Hash = Txn[Hash256.hash]; LedgerHash = null; // XXXXXX } } else if (resultMessageSource == Source.request_account_tx) { JToken validated; Validated = json.TryGetValue("validated", out validated) && validated.ToObject<bool>(); JToken meta; if (Validated && !json.TryGetValue("meta", out meta)) { throw new InvalidOperationException("It's validated, why doesn't it have meta??"); } if (Validated) { var tx = json.GetValue("tx").ToObject<JObject>(); Meta = (TransactionMeta)StObject.FromJObject(json.GetValue("meta").ToObject<JObject>()); EngineResult = TransactionEngineResult.FromNumber(Meta[UInt8.TransactionResult]); Txn = (Transaction)StObject.FromJObject(tx); Hash = Txn[Hash256.hash]; LedgerIndex = new UInt32(tx.GetValue("ledger_index").ToObject<long>()); LedgerHash = null; } } else if (resultMessageSource == Source.request_account_tx_binary) { JToken validated; Validated = json.TryGetValue("validated", out validated) && validated.ToObject<bool>(); JToken meta; if (Validated && !json.TryGetValue("meta", out meta)) { throw new InvalidOperationException("It's validated, why doesn't it have meta??"); } if (Validated) { /* { "ledger_index": 3378767, "meta": "201 ...", "tx_blob": "120 ...", "validated": true }, */ var tx = json.GetValue("tx_blob").ToObject<string>(); byte[] decodedTx = B16.Decode(tx); Meta = (TransactionMeta)StObject.Translate.FromHex(json.GetValue("meta").ToObject<string>()); Txn = (Transaction)StObject.Translate.FromBytes(decodedTx); Hash = Hash256.TransactionId(decodedTx); Txn.Add(Field.hash, Hash); EngineResult = Meta.TransactionResult(); LedgerIndex = new UInt32(json.GetValue("ledger_index").ToObject<long>()); LedgerHash = null; } } } catch (JsonException e) { throw new ApplicationException("Json deserialization failed.", e); } }
public static Class ForResult(TransactionEngineResult result) { if (result._ord >= telLOCAL_ERROR._starts && result._ord < temMALFORMED._starts) { return telLOCAL_ERROR; } if (result._ord >= temMALFORMED._starts && result._ord < tefFAILURE._starts) { return telLOCAL_ERROR; } if (result._ord >= tefFAILURE._starts && result._ord < terRETRY._starts) { return telLOCAL_ERROR; } if (result._ord >= terRETRY._starts && result._ord < tesSUCCESS._starts) { return telLOCAL_ERROR; } if (result._ord >= tesSUCCESS._starts && result._ord < tecCLAIMED._starts) { return tesSUCCESS; } return tecCLAIMED; }