Merge branch 'master' of github.com:jedmccaleb/NewCoin

This commit is contained in:
Arthur Britto
2012-12-29 14:43:07 -08:00
7 changed files with 42 additions and 6 deletions

View File

@@ -7,6 +7,8 @@
#include "Log.h" #include "Log.h"
SETUP_LOG(); SETUP_LOG();
// Logic to handle incoming HTTP reqests
void HTTPRequest::reset() void HTTPRequest::reset()
{ {
vHeaders.clear(); vHeaders.clear();

View File

@@ -16,7 +16,7 @@ enum HTTPRequestAction
}; };
class HTTPRequest class HTTPRequest
{ // an HTTP request in progress { // an HTTP request we are handling from a client
protected: protected:
enum state enum state

View File

@@ -954,6 +954,40 @@ int Ledger::getLedgerHashOffset(uint32 desiredLedgerIndex, uint32 currentLedgerI
return currentLedgerIndex - desiredLedgerIndex - 1; return currentLedgerIndex - desiredLedgerIndex - 1;
} }
uint256 Ledger::getLedgerHash(uint32 ledgerIndex)
{ // return the hash of the specified ledger, 0 if not available
// easy cases
if (ledgerIndex > mLedgerSeq)
return uint256();
if (ledgerIndex == mLedgerSeq)
return getHash();
if (ledgerIndex == (mLedgerSeq - 1))
return mParentHash;
// within 255
int offset = getLedgerHashOffset(ledgerIndex, mLedgerSeq);
if (offset != -1)
{
SLE::pointer hashIndex = getSLE(getLedgerHashIndex());
if (hashIndex)
return hashIndex->getFieldV256(sfHashes).peekValue().at(offset);
else
assert(false);
}
if ((ledgerIndex & 0xff) != 0)
return uint256();
SLE::pointer hashIndex = getSLE(getLedgerHashIndex(ledgerIndex));
if (hashIndex)
return hashIndex->getFieldV256(sfHashes).peekValue().at(getLedgerHashOffset(ledgerIndex, mLedgerSeq));
else
assert(false);
return uint256();
}
uint256 Ledger::getBookBase(const uint160& uTakerPaysCurrency, const uint160& uTakerPaysIssuerID, uint256 Ledger::getBookBase(const uint160& uTakerPaysCurrency, const uint160& uTakerPaysIssuerID,
const uint160& uTakerGetsCurrency, const uint160& uTakerGetsIssuerID) const uint160& uTakerGetsCurrency, const uint160& uTakerGetsIssuerID)
{ {
@@ -1112,7 +1146,6 @@ void Ledger::updateSkipList()
if (!skipList) if (!skipList)
{ {
skipList = boost::make_shared<SLE>(ltLEDGER_HASHES, hash); skipList = boost::make_shared<SLE>(ltLEDGER_HASHES, hash);
skipList->setFieldU32(sfFirstLedgerSequence, prevIndex);
} }
else else
hashes = skipList->getFieldV256(sfHashes).peekValue(); hashes = skipList->getFieldV256(sfHashes).peekValue();
@@ -1135,7 +1168,6 @@ void Ledger::updateSkipList()
if (!skipList) if (!skipList)
{ {
skipList = boost::make_shared<SLE>(ltLEDGER_HASHES, hash); skipList = boost::make_shared<SLE>(ltLEDGER_HASHES, hash);
skipList->setFieldU32(sfFirstLedgerSequence, prevIndex);
} }
else else
hashes = skipList->getFieldV256(sfHashes).peekValue(); hashes = skipList->getFieldV256(sfHashes).peekValue();

View File

@@ -198,6 +198,7 @@ public:
static uint256 getLedgerHashIndex(uint32 desiredLedgerIndex); static uint256 getLedgerHashIndex(uint32 desiredLedgerIndex);
static int getLedgerHashOffset(uint32 desiredLedgerIndex); static int getLedgerHashOffset(uint32 desiredLedgerIndex);
static int getLedgerHashOffset(uint32 desiredLedgerIndex, uint32 currentLedgerIndex); static int getLedgerHashOffset(uint32 desiredLedgerIndex, uint32 currentLedgerIndex);
uint256 getLedgerHash(uint32 ledgerIndex);
static uint256 getLedgerFeatureIndex(); static uint256 getLedgerFeatureIndex();
static uint256 getLedgerFeeIndex(); static uint256 getLedgerFeeIndex();

View File

@@ -96,7 +96,7 @@ static bool LEFInit()
; ;
DECLARE_LEF(LedgerHashes, ltLEDGER_HASHES) DECLARE_LEF(LedgerHashes, ltLEDGER_HASHES)
<< SOElement(sfFirstLedgerSequence, SOE_OPTIONAL) << SOElement(sfFirstLedgerSequence, SOE_OPTIONAL) // Remove if we do a ledger restart
<< SOElement(sfLastLedgerSequence, SOE_OPTIONAL) << SOElement(sfLastLedgerSequence, SOE_OPTIONAL)
<< SOElement(sfHashes, SOE_REQUIRED) << SOElement(sfHashes, SOE_REQUIRED)
; ;

View File

@@ -540,6 +540,7 @@ bool SHAMap::delItem(const uint256& id)
SHAMapItem::pointer item = onlyBelow(node.get()); SHAMapItem::pointer item = onlyBelow(node.get());
if (item) if (item)
{ {
returnNode(node, true);
eraseChildren(node); eraseChildren(node);
#ifdef ST_DEBUG #ifdef ST_DEBUG
std::cerr << "Making item node " << *node << std::endl; std::cerr << "Making item node " << *node << std::endl;

View File

@@ -56,7 +56,7 @@
FIELD(BondAmount, UINT32, 23) FIELD(BondAmount, UINT32, 23)
FIELD(LoadFee, UINT32, 24) FIELD(LoadFee, UINT32, 24)
FIELD(OfferSequence, UINT32, 25) FIELD(OfferSequence, UINT32, 25)
FIELD(FirstLedgerSequence, UINT32, 26) FIELD(FirstLedgerSequence, UINT32, 26) // Deprecated: do not use
FIELD(LastLedgerSequence, UINT32, 27) FIELD(LastLedgerSequence, UINT32, 27)
FIELD(TransactionIndex, UINT32, 28) FIELD(TransactionIndex, UINT32, 28)
FIELD(OperationLimit, UINT32, 29) FIELD(OperationLimit, UINT32, 29)