mirror of
https://github.com/Xahau/xahaud.git
synced 2025-12-06 17:27:52 +00:00
Refactor NodeStore
This commit is contained in:
@@ -6,6 +6,8 @@
|
||||
|
||||
SETUP_LOG (NodeObject)
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
NodeObject::NodeObject (
|
||||
NodeObjectType type,
|
||||
LedgerIndex ledgerIndex,
|
||||
@@ -32,80 +34,6 @@ NodeObject::NodeObject (
|
||||
{
|
||||
}
|
||||
|
||||
NodeObject::NodeObject (void const* key, void const* value, int valueBytes)
|
||||
{
|
||||
DecodedBlob decoded (key, value, valueBytes);
|
||||
|
||||
if (decoded.success)
|
||||
{
|
||||
mType = decoded.objectType;
|
||||
mHash = uint256 (key);
|
||||
mLedgerIndex = decoded.ledgerIndex;
|
||||
mData = Blob (decoded.objectData, decoded.objectData + decoded.dataBytes);
|
||||
}
|
||||
else
|
||||
{
|
||||
// VFALCO TODO Write the hex version of key to the string for diagnostics.
|
||||
String s;
|
||||
s << "NodeStore:: DecodedBlob failed";
|
||||
Throw (s);
|
||||
}
|
||||
}
|
||||
|
||||
NodeObject::DecodedBlob::DecodedBlob (void const* key, void const* value, int valueBytes)
|
||||
{
|
||||
/* Data format:
|
||||
|
||||
Bytes
|
||||
|
||||
0...3 LedgerIndex 32-bit big endian integer
|
||||
4...7 Unused? An unused copy of the LedgerIndex
|
||||
8 char One of NodeObjectType
|
||||
9...end The body of the object data
|
||||
*/
|
||||
|
||||
success = false;
|
||||
key = key;
|
||||
// VFALCO NOTE Ledger indexes should have started at 1
|
||||
ledgerIndex = LedgerIndex (-1);
|
||||
objectType = hotUNKNOWN;
|
||||
objectData = nullptr;
|
||||
dataBytes = bmin (0, valueBytes - 9);
|
||||
|
||||
if (dataBytes > 4)
|
||||
{
|
||||
LedgerIndex const* index = static_cast <LedgerIndex const*> (value);
|
||||
ledgerIndex = ByteOrder::swapIfLittleEndian (*index);
|
||||
}
|
||||
|
||||
// VFALCO NOTE What about bytes 4 through 7 inclusive?
|
||||
|
||||
if (dataBytes > 8)
|
||||
{
|
||||
unsigned char const* byte = static_cast <unsigned char const*> (value);
|
||||
objectType = static_cast <NodeObjectType> (byte [8]);
|
||||
}
|
||||
|
||||
if (dataBytes > 9)
|
||||
{
|
||||
objectData = static_cast <unsigned char const*> (value) + 9;
|
||||
|
||||
switch (objectType)
|
||||
{
|
||||
case hotUNKNOWN:
|
||||
default:
|
||||
break;
|
||||
|
||||
case hotLEDGER:
|
||||
case hotTRANSACTION:
|
||||
case hotACCOUNT_NODE:
|
||||
case hotTRANSACTION_NODE:
|
||||
success = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
NodeObjectType NodeObject::getType () const
|
||||
{
|
||||
return mType;
|
||||
@@ -125,3 +53,32 @@ Blob const& NodeObject::getData () const
|
||||
{
|
||||
return mData;
|
||||
}
|
||||
|
||||
bool NodeObject::isCloneOf (NodeObject const& other) const
|
||||
{
|
||||
return
|
||||
mType == other.mType &&
|
||||
mHash == other.mHash &&
|
||||
mLedgerIndex == other.mLedgerIndex &&
|
||||
mData == other.mData
|
||||
;
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
class NodeObjectTests : public UnitTest
|
||||
{
|
||||
public:
|
||||
|
||||
NodeObjectTests () : UnitTest ("NodeObject")
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
void runTest ()
|
||||
{
|
||||
}
|
||||
};
|
||||
|
||||
static NodeObjectTests nodeObjectTests;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user