mirror of
https://github.com/Xahau/xahaud.git
synced 2025-12-06 17:27:52 +00:00
109 lines
3.1 KiB
C++
109 lines
3.1 KiB
C++
//------------------------------------------------------------------------------
|
|
/*
|
|
Copyright (c) 2011-2013, OpenCoin, Inc.
|
|
*/
|
|
//==============================================================================
|
|
|
|
#ifndef RIPPLE_SERIALIZEDLEDGER_H
|
|
#define RIPPLE_SERIALIZEDLEDGER_H
|
|
|
|
// VFALCO NOTE
|
|
//
|
|
// This looks like a central class for Ripple. Almost everything that
|
|
// does anything of interest deals with SLE objects. Any documentation
|
|
// effort should start with a complete description of this object and
|
|
// all of its operations.
|
|
//
|
|
// It is derived from STObject so it inherits a lot of behavior from that.
|
|
//
|
|
// VFALCO TODO Rename the source file to match the class
|
|
//
|
|
// VFALCO TODO Can we rename this class to something shorter and more concise?
|
|
//
|
|
// Can we just call this LedgerEntry?
|
|
//
|
|
class SerializedLedgerEntry
|
|
: public STObject
|
|
, public CountedObject <SerializedLedgerEntry>
|
|
{
|
|
public:
|
|
static char const* getCountedObjectName () { return "SerializedLedgerEntry"; }
|
|
|
|
typedef boost::shared_ptr<SerializedLedgerEntry> pointer;
|
|
typedef const boost::shared_ptr<SerializedLedgerEntry>& ref;
|
|
|
|
public:
|
|
SerializedLedgerEntry (const Serializer & s, uint256 const & index);
|
|
SerializedLedgerEntry (SerializerIterator & sit, uint256 const & index);
|
|
SerializedLedgerEntry (LedgerEntryType type, uint256 const & index);
|
|
|
|
SerializedTypeID getSType () const
|
|
{
|
|
return STI_LEDGERENTRY;
|
|
}
|
|
std::string getFullText () const;
|
|
std::string getText () const;
|
|
Json::Value getJson (int options) const;
|
|
|
|
uint256 const& getIndex () const
|
|
{
|
|
return mIndex;
|
|
}
|
|
void setIndex (uint256 const & i)
|
|
{
|
|
mIndex = i;
|
|
}
|
|
|
|
void setImmutable ()
|
|
{
|
|
mMutable = false;
|
|
}
|
|
bool isMutable ()
|
|
{
|
|
return mMutable;
|
|
}
|
|
SerializedLedgerEntry::pointer getMutable () const;
|
|
|
|
LedgerEntryType getType () const
|
|
{
|
|
return mType;
|
|
}
|
|
uint16 getVersion () const
|
|
{
|
|
return getFieldU16 (sfLedgerEntryType);
|
|
}
|
|
LedgerFormats::Item const* getFormat ()
|
|
{
|
|
return mFormat;
|
|
}
|
|
|
|
bool isThreadedType (); // is this a ledger entry that can be threaded
|
|
bool isThreaded (); // is this ledger entry actually threaded
|
|
bool hasOneOwner (); // This node has one other node that owns it (like nickname)
|
|
bool hasTwoOwners (); // This node has two nodes that own it (like ripple balance)
|
|
RippleAddress getOwner ();
|
|
RippleAddress getFirstOwner ();
|
|
RippleAddress getSecondOwner ();
|
|
uint256 getThreadedTransaction ();
|
|
uint32 getThreadedLedger ();
|
|
bool thread (uint256 const & txID, uint32 ledgerSeq, uint256 & prevTxID, uint32 & prevLedgerID);
|
|
std::vector<uint256> getOwners (); // nodes notified if this node is deleted
|
|
|
|
private:
|
|
SerializedLedgerEntry* duplicate () const
|
|
{
|
|
return new SerializedLedgerEntry (*this);
|
|
}
|
|
|
|
private:
|
|
uint256 mIndex;
|
|
LedgerEntryType mType;
|
|
LedgerFormats::Item const* mFormat;
|
|
bool mMutable;
|
|
};
|
|
|
|
typedef SerializedLedgerEntry SLE;
|
|
|
|
#endif
|
|
// vim:ts=4
|