mirror of
https://github.com/Xahau/xahaud.git
synced 2025-12-06 17:27:52 +00:00
Construct the next ledger from the existing ledger.
Close ledger logic.
This commit is contained in:
20
Ledger.cpp
20
Ledger.cpp
@@ -12,7 +12,7 @@ using namespace boost;
|
||||
using namespace std;
|
||||
|
||||
Ledger::Ledger(const uint160& masterID, uint64 startAmount) :
|
||||
mFeeHeld(0), mTimeStamp(0), mLedgerSeq(0), mCurrent(true)
|
||||
mFeeHeld(0), mTimeStamp(0), mLedgerSeq(0), mClosed(false)
|
||||
{
|
||||
mTransactionMap=SHAMap::pointer(new SHAMap());
|
||||
mAccountStateMap=SHAMap::pointer(new SHAMap());
|
||||
@@ -25,11 +25,18 @@ Ledger::Ledger(const uint160& masterID, uint64 startAmount) :
|
||||
Ledger::Ledger(const uint256 &parentHash, const uint256 &transHash, const uint256 &accountHash,
|
||||
uint64 feeHeld, uint64 timeStamp, uint32 ledgerSeq)
|
||||
: mParentHash(parentHash), mTransHash(transHash), mAccountHash(accountHash),
|
||||
mFeeHeld(feeHeld), mTimeStamp(timeStamp), mLedgerSeq(ledgerSeq), mCurrent(false)
|
||||
mFeeHeld(feeHeld), mTimeStamp(timeStamp), mLedgerSeq(ledgerSeq), mClosed(false)
|
||||
{
|
||||
updateHash();
|
||||
}
|
||||
|
||||
Ledger::Ledger(Ledger &prevLedger, uint64 ts) : mTimeStamp(ts), mClosed(false)
|
||||
{
|
||||
prevLedger.updateHash();
|
||||
mParentHash=prevLedger.mHash;
|
||||
mLedgerSeq=prevLedger.mLedgerSeq+1;
|
||||
}
|
||||
|
||||
void Ledger::updateHash()
|
||||
{
|
||||
Serializer s(116);
|
||||
@@ -84,7 +91,7 @@ Transaction::pointer Ledger::getTransaction(const uint256& transID)
|
||||
SHAMapItem::pointer item=mTransactionMap->peekItem(transID);
|
||||
if(!item) return Transaction::pointer();
|
||||
Transaction *t=new Transaction(item->getData(), true);
|
||||
if(t->getStatus()==NEW) t->setStatus(mCurrent ? INCLUDED : COMMITTED, mLedgerSeq);
|
||||
if(t->getStatus()==NEW) t->setStatus(mClosed ? COMMITTED : INCLUDED, mLedgerSeq);
|
||||
return Transaction::pointer(t);
|
||||
}
|
||||
|
||||
@@ -192,6 +199,13 @@ Ledger::TransResult Ledger::hasTransaction(Transaction::pointer trans)
|
||||
}
|
||||
}
|
||||
|
||||
Ledger::pointer Ledger::closeLedger(uint64 timeStamp)
|
||||
{ // close this ledger, return a pointer to the next ledger
|
||||
// CAUTION: New ledger needs its SHAMap's connected to storage
|
||||
setClosed();
|
||||
return Ledger::pointer(new Ledger(*this, timeStamp));
|
||||
}
|
||||
|
||||
#if 0
|
||||
// TODO: we should probably make a shared pointer type for each of these PB types
|
||||
newcoin::FullLedger* Ledger::createFullLedger()
|
||||
|
||||
Reference in New Issue
Block a user