mirror of
https://github.com/XRPLF/rippled.git
synced 2026-06-03 16:56:48 +00:00
* XRPLF/develop: ci: Rewrite clang-tidy workflow(s) in a reusable manner (7062) chore: Ignore identifier-naming update in git blame (7066) refactor: Enable clang-tidy `readability-identifier-naming` check (6571) refactor: Revert certain `Throw`s by `LogicError`s (7036) ci: Rename print-env -> print-build-env (7061) fix: Gate -mcmodel flags to x86_64 in sanitizer builds (7049) fix: Prevents overwriting a bool value in an invariant (6609) fix: Address code review comments regarding `boost::coroutine2` (6977) refactor: Apply various minor improvements and corrections (7045) fix: Store `Delegate` object in delegating and authorized account directories for proper deletion (6681) ci: Use print-env from XRPLF/actions (7052) fix: Make assorted RPC fixes (6529) chore: Enable clang-tidy v21 new checks (7031) feat: Create new transaction testing framework `TxTest` (6537) feat: Add cleanup amendment for 3.2.0 (7037) fix: Fix ubsan flagged issues (6151)
82 lines
2.1 KiB
C++
82 lines
2.1 KiB
C++
#pragma once
|
|
|
|
#include <xrpl/basics/Slice.h>
|
|
#include <xrpl/basics/base_uint.h>
|
|
#include <xrpl/basics/chrono.h>
|
|
#include <xrpl/protocol/Protocol.h>
|
|
#include <xrpl/protocol/Serializer.h>
|
|
#include <xrpl/protocol/XRPAmount.h>
|
|
|
|
namespace xrpl {
|
|
|
|
/** Information about the notional ledger backing the view. */
|
|
struct LedgerHeader
|
|
{
|
|
explicit LedgerHeader() = default;
|
|
|
|
//
|
|
// For all ledgers
|
|
//
|
|
|
|
LedgerIndex seq = 0;
|
|
NetClock::time_point parentCloseTime;
|
|
|
|
//
|
|
// For closed ledgers
|
|
//
|
|
|
|
// Closed means "tx set already determined"
|
|
uint256 hash = beast::kZERO;
|
|
uint256 txHash = beast::kZERO;
|
|
uint256 accountHash = beast::kZERO;
|
|
uint256 parentHash = beast::kZERO;
|
|
|
|
XRPAmount drops = beast::kZERO;
|
|
|
|
// If validated is false, it means "not yet validated."
|
|
// Once validated is true, it will never be set false at a later time.
|
|
// NOTE: If you are accessing this directly, you are probably doing it
|
|
// wrong. Use LedgerMaster::isValidated().
|
|
// VFALCO TODO Make this not mutable
|
|
bool mutable validated = false;
|
|
bool accepted = false;
|
|
|
|
// flags indicating how this ledger close took place
|
|
int closeFlags = 0;
|
|
|
|
// the resolution for this ledger close time (2-120 seconds)
|
|
NetClock::duration closeTimeResolution = {};
|
|
|
|
// For closed ledgers, the time the ledger
|
|
// closed. For open ledgers, the time the ledger
|
|
// will close if there's no transactions.
|
|
//
|
|
NetClock::time_point closeTime;
|
|
};
|
|
|
|
// ledger close flags
|
|
static std::uint32_t const kS_LCF_NO_CONSENSUS_TIME = 0x01;
|
|
|
|
inline bool
|
|
getCloseAgree(LedgerHeader const& info)
|
|
{
|
|
return (info.closeFlags & kS_LCF_NO_CONSENSUS_TIME) == 0;
|
|
}
|
|
|
|
void
|
|
addRaw(LedgerHeader const&, Serializer&, bool includeHash = false);
|
|
|
|
/** Deserialize a ledger header from a byte array. */
|
|
LedgerHeader
|
|
deserializeHeader(Slice data, bool hasHash = false);
|
|
|
|
/** Deserialize a ledger header (prefixed with 4 bytes) from a byte array. */
|
|
LedgerHeader
|
|
deserializePrefixedHeader(Slice data, bool hasHash = false);
|
|
|
|
/** Calculate the hash of a ledger header. */
|
|
uint256
|
|
calculateLedgerHash(LedgerHeader const& info);
|
|
|
|
} // namespace xrpl
|