//------------------------------------------------------------------------------ /* Copyright (c) 2011-2013, OpenCoin, Inc. */ //============================================================================== #ifndef RIPPLE_ACCOUNTSTATE_H #define RIPPLE_ACCOUNTSTATE_H // // Provide abstract access to an account's state, such that access to the serialized format is hidden. // class AccountState : LeakChecked { public: typedef boost::shared_ptr pointer; public: // For new accounts explicit AccountState (RippleAddress const& naAccountID); // For accounts in a ledger AccountState (SLE::ref ledgerEntry, RippleAddress const& naAccountI); bool haveAuthorizedKey () { return mLedgerEntry->isFieldPresent (sfRegularKey); } RippleAddress getAuthorizedKey () { return mLedgerEntry->getFieldAccount (sfRegularKey); } STAmount getBalance () const { return mLedgerEntry->getFieldAmount (sfBalance); } uint32 getSeq () const { return mLedgerEntry->getFieldU32 (sfSequence); } SerializedLedgerEntry::pointer getSLE () { return mLedgerEntry; } SerializedLedgerEntry const& peekSLE () const { return *mLedgerEntry; } SerializedLedgerEntry& peekSLE () { return *mLedgerEntry; } Blob getRaw () const; void addJson (Json::Value& value); void dump (); static std::string createGravatarUrl (uint128 uEmailHash); private: RippleAddress const mAccountID; RippleAddress mAuthorizedKey; SerializedLedgerEntry::pointer mLedgerEntry; bool mValid; }; #endif