From a2c526a913bd89510a4b97f875f4d631416e5213 Mon Sep 17 00:00:00 2001 From: JoelKatz Date: Sat, 6 Oct 2012 14:30:56 -0700 Subject: [PATCH] Construct SerializedTransaction from STObject --- src/SerializedTransaction.cpp | 15 ++++++++++++++- src/SerializedTransaction.h | 1 + 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/src/SerializedTransaction.cpp b/src/SerializedTransaction.cpp index 869a9b606..0c5ebdd41 100644 --- a/src/SerializedTransaction.cpp +++ b/src/SerializedTransaction.cpp @@ -17,6 +17,19 @@ SerializedTransaction::SerializedTransaction(TransactionType type) : STObject(sf setFieldU16(sfTransactionType, mFormat->t_type); } +SerializedTransaction::SerializedTransaction(const STObject& object) : STObject(object) +{ + mType = static_cast(getFieldU16(sfTransactionType)); + mFormat = TransactionFormat::getTxnFormat(mType); + if (!mFormat) + throw std::runtime_error("invalid transaction type"); + if (!setType(mFormat->elements)) + { + assert(false); + throw std::runtime_error("transaction not valid"); + } +} + SerializedTransaction::SerializedTransaction(SerializerIterator& sit) : STObject(sfTransaction) { int length = sit.getBytesLeft(); @@ -209,9 +222,9 @@ BOOST_AUTO_TEST_CASE( STrans_test ) Log(lsFATAL) << copy.getJson(0); BOOST_FAIL("Transaction fails serialize/deserialize test"); } + Log(lsINFO) << "ORIG: " << j.getJson(0); std::auto_ptr new_obj = STObject::parseJson(j.getJson(0), sfGeneric); if (new_obj.get() == NULL) BOOST_FAIL("Unable to build object from json"); - Log(lsINFO) << "ORIG: " << j.getJson(0); Log(lsINFO) << "BUILT " << new_obj->getJson(0); } diff --git a/src/SerializedTransaction.h b/src/SerializedTransaction.h index a2089f224..e049a455d 100644 --- a/src/SerializedTransaction.h +++ b/src/SerializedTransaction.h @@ -31,6 +31,7 @@ protected: public: SerializedTransaction(SerializerIterator& sit); SerializedTransaction(TransactionType type); + SerializedTransaction(const STObject &object); // STObject functions SerializedTypeID getSType() const { return STI_TRANSACTION; }