diff --git a/src/LedgerEngine.h b/src/LedgerEngine.h new file mode 100644 index 0000000000..d39645c806 --- /dev/null +++ b/src/LedgerEngine.h @@ -0,0 +1,45 @@ +#ifndef __LEDGERENGINE__ +#define __LEDGERENGINE__ + +#include + +#include + +#include "uint256.h" +#include "Ledger.h" +#include "Currency.h" +#include "SerializedLedger.h" + +// A LedgerEngine handles high-level operations to a ledger + +enum LedgerEngineParms +{ + lepCREATE = 1, // Create if not present +}; + +class LedgerEngine +{ +public: + typedef boost::shared_ptr pointer; + +protected: + Ledger::pointer mLedger; + +public: + LedgerEngine() { ; } + LedgerEngine(Ledger::pointer l) : mLedger(l) { ; } + + Ledger::pointer getTargetLedger() { return mLedger; } + void setTargetLedger(Ledger::pointer ledger) { mLedger = ledger; } + + SerializedLedgerEntry::pointer getAccountRoot(LedgerEngineParms parms, const uint160& accountID); + + SerializedLedgerEntry::pointer getNickname(LedgerEngineParms parms, const std::string& nickname); + SerializedLedgerEntry::pointer getNickname(LedgerEngineParms parms, const uint256& nickHash); + + SerializedLedgerEntry::pointer getRippleState(LedgerEngineParms parms, const uint160& offeror, + const uint160& borrower, const Currency& currency); + +}; + +#endif diff --git a/src/TransactionEngine.h b/src/TransactionEngine.h index 410b6b2bcf..f8320c70aa 100644 --- a/src/TransactionEngine.h +++ b/src/TransactionEngine.h @@ -2,6 +2,8 @@ #define __TRANSACTIONENGINE__ #include "Ledger.h" +#include "LedgerEngine.h" +#include "Currency.h" #include "SerializedTransaction.h" #include "SerializedLedger.h" @@ -32,7 +34,7 @@ enum TransactionEngineParams class TransactionEngine { protected: - Ledger::pointer mTargetLedger; + LedgerEngine::pointer mTxnEngine; TransactionEngineResult doPayment(const SerializedTransaction&, SerializedLedgerEntry& source); TransactionEngineResult doInvoice(const SerializedTransaction&, SerializedLedgerEntry& source); @@ -43,10 +45,11 @@ protected: TransactionEngineResult doDelete(const SerializedTransaction&, SerializedLedgerEntry& source); public: - TransactionEngine(Ledger::pointer targetLedger) : mTargetLedger(targetLedger) { ; } + TransactionEngine() { ; } + TransactionEngine(LedgerEngine::pointer txnEngine) : mTxnEngine(txnEngine) { ; } - Ledger::pointer getTargetLedger() { return mTargetLedger; } - void setTargetLedger(Ledger::pointer targetLedger) { mTargetLedger = targetLedger; } + LedgerEngine::pointer getLedgerEngine() { return mTxnEngine; } + void setLedgerEngine(LedgerEngine::pointer engine) { mTxnEngine = engine; } TransactionEngineResult applyTransaction(const SerializedTransaction&, TransactionEngineParams); };