blob: 129448479c1b1600a3c4ac8192023868f9022d9a (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
#include "entity.h"
#include "core.h"
namespace hotstuff {
void Block::serialize(DataStream &s) const {
s << (uint32_t)parent_hashes.size();
for (const auto &hash: parent_hashes)
s << hash;
s << (uint32_t)cmds.size();
for (auto cmd: cmds)
s << *cmd;
if (qc == nullptr)
s << (uint8_t)0;
else
s << (uint8_t)1 << *qc;
}
void Block::unserialize(DataStream &s, HotStuffCore *hsc) {
uint32_t n;
uint8_t has_qc;
s >> n;
parent_hashes.resize(n);
for (auto &hash: parent_hashes)
s >> hash;
s >> n;
cmds.resize(n);
for (auto &cmd: cmds)
cmd = hsc->parse_cmd(s);
s >> has_qc;
qc = has_qc ? hsc->parse_quorum_cert(s) : nullptr;
this->hash = salticidae::get_hash(*this);
}
}
|