More ledger functions, updateAccountState/addTransaction.

This commit is contained in:
JoelKatz
2011-11-23 12:50:51 -08:00
parent 17c265ee24
commit 5fc9233fb5

View File

@@ -43,15 +43,27 @@ void Ledger::addRaw(Serializer &s)
AccountState::pointer Ledger::getAccountState(const uint160& accountID) AccountState::pointer Ledger::getAccountState(const uint160& accountID)
{ {
ScopedLock l(mTransactionMap->Lock()); ScopedLock l(mTransactionMap->Lock());
SHAMapItem::pointer item=mTransactionMap->getItem(uint160to256(accountID)); SHAMapItem::pointer item=mTransactionMap->peekItem(uint160to256(accountID));
if(item==NULL) return AccountState::pointer(); if(item==NULL) return AccountState::pointer();
return AccountState::pointer(new AccountState(item->getData())); return AccountState::pointer(new AccountState(item->getData()));
} }
bool Ledger::updateAccountState(AccountState::pointer state)
{
SHAMapItem::pointer item(new SHAMapItem(state->getAccountID(), state->getRaw()));
return mAccountStateMap->updateGiveItem(item);
}
bool Ledger::addTransaction(Transaction::pointer trans)
{ // low-level - just add to table
SHAMapItem::pointer item(new SHAMapItem(trans->getID(), trans->getSigned()->getData()));
return mTransactionMap->addGiveItem(item);
}
Transaction::pointer Ledger::getTransaction(const uint256& transID) Transaction::pointer Ledger::getTransaction(const uint256& transID)
{ {
ScopedLock l(mTransactionMap->Lock()); ScopedLock l(mTransactionMap->Lock());
SHAMapItem::pointer item=mTransactionMap->getItem(transID); SHAMapItem::pointer item=mTransactionMap->peekItem(transID);
if(item==NULL) return Transaction::pointer(); if(item==NULL) return Transaction::pointer();
Transaction *t=new Transaction(item->getData(), true); Transaction *t=new Transaction(item->getData(), true);
if(t->getStatus()==NEW) t->setStatus(mCurrent ? INCLUDED : COMMITTED, mLedgerSeq); if(t->getStatus()==NEW) t->setStatus(mCurrent ? INCLUDED : COMMITTED, mLedgerSeq);
@@ -100,7 +112,7 @@ Ledger::TransResult Ledger::applyTransaction(Transaction::pointer trans)
} }
Ledger::TransResult Ledger::removeTransaction(Transaction::pointer trans) Ledger::TransResult Ledger::removeTransaction(Transaction::pointer trans)
{ { // high-level - reverse application of transaction
} }
Ledger::TransResult Ledger::hasTransaction(Transaction::pointer trans) Ledger::TransResult Ledger::hasTransaction(Transaction::pointer trans)