rippled
Loading...
Searching...
No Matches
libxrpl/protocol/LedgerHeader.cpp
1#include <xrpl/basics/Slice.h>
2#include <xrpl/basics/chrono.h>
3#include <xrpl/protocol/LedgerHeader.h>
4#include <xrpl/protocol/Serializer.h>
5
6namespace ripple {
7
8void
9addRaw(LedgerHeader const& info, Serializer& s, bool includeHash)
10{
11 s.add32(info.seq);
12 s.add64(info.drops.drops());
14 s.addBitString(info.txHash);
16 s.add32(info.parentCloseTime.time_since_epoch().count());
17 s.add32(info.closeTime.time_since_epoch().count());
19 s.add8(info.closeFlags);
20
21 if (includeHash)
22 s.addBitString(info.hash);
23}
24
25LedgerHeader
26deserializeHeader(Slice data, bool hasHash)
27{
28 SerialIter sit(data.data(), data.size());
29
30 LedgerHeader header;
31
32 header.seq = sit.get32();
33 header.drops = sit.get64();
34 header.parentHash = sit.get256();
35 header.txHash = sit.get256();
36 header.accountHash = sit.get256();
37 header.parentCloseTime =
41 header.closeFlags = sit.get8();
42
43 if (hasHash)
44 header.hash = sit.get256();
45
46 return header;
47}
48
49LedgerHeader
51{
52 return deserializeHeader(data + 4, hasHash);
53}
54
55} // namespace ripple
std::uint32_t get32()
unsigned char get8()
std::uint64_t get64()
int addBitString(base_uint< Bits, Tag > const &v)
Definition Serializer.h:112
int add8(unsigned char i)
An immutable linear range of bytes.
Definition Slice.h:27
constexpr value_type drops() const
Returns the number of drops.
Definition XRPAmount.h:158
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
Definition algorithm.h:6
LedgerHeader deserializePrefixedHeader(Slice data, bool hasHash=false)
Deserialize a ledger header (prefixed with 4 bytes) from a byte array.
void addRaw(LedgerHeader const &, Serializer &, bool includeHash=false)
LedgerHeader deserializeHeader(Slice data, bool hasHash=false)
Deserialize a ledger header from a byte array.
Information about the notional ledger backing the view.
NetClock::time_point closeTime
NetClock::duration closeTimeResolution
NetClock::time_point parentCloseTime
T time_since_epoch(T... args)