Files
rippled/modules/ripple_app/paths/ripple_RippleState.cpp
2013-07-23 18:47:02 -07:00

61 lines
1.7 KiB
C++

//------------------------------------------------------------------------------
/*
Copyright (c) 2011-2013, OpenCoin, Inc.
*/
//==============================================================================
AccountItem::pointer RippleState::makeItem (const uint160& accountID, SerializedLedgerEntry::ref ledgerEntry)
{
if (!ledgerEntry || ledgerEntry->getType () != ltRIPPLE_STATE)
return AccountItem::pointer ();
RippleState* rs = new RippleState (ledgerEntry);
rs->setViewAccount (accountID);
return AccountItem::pointer (rs);
}
RippleState::RippleState (SerializedLedgerEntry::ref ledgerEntry) : AccountItem (ledgerEntry),
mValid (false),
mViewLowest (true),
mLowLimit (ledgerEntry->getFieldAmount (sfLowLimit)),
mHighLimit (ledgerEntry->getFieldAmount (sfHighLimit)),
mLowID (mLowLimit.getIssuer ()),
mHighID (mHighLimit.getIssuer ()),
mBalance (ledgerEntry->getFieldAmount (sfBalance))
{
mFlags = mLedgerEntry->getFieldU32 (sfFlags);
mLowQualityIn = mLedgerEntry->getFieldU32 (sfLowQualityIn);
mLowQualityOut = mLedgerEntry->getFieldU32 (sfLowQualityOut);
mHighQualityIn = mLedgerEntry->getFieldU32 (sfHighQualityIn);
mHighQualityOut = mLedgerEntry->getFieldU32 (sfHighQualityOut);
mValid = true;
}
void RippleState::setViewAccount (const uint160& accountID)
{
bool bViewLowestNew = mLowID == accountID;
if (bViewLowestNew != mViewLowest)
{
mViewLowest = bViewLowestNew;
mBalance.negate ();
}
}
Json::Value RippleState::getJson (int)
{
Json::Value ret (Json::objectValue);
ret["low_id"] = mLowID.GetHex ();
ret["high_id"] = mHighID.GetHex ();
return ret;
}
// vim:ts=4