aboutsummaryrefslogtreecommitdiff
path: root/src/entity.cpp
diff options
context:
space:
mode:
authorDeterminant <tederminant@gmail.com>2018-08-03 18:09:01 -0400
committerDeterminant <tederminant@gmail.com>2018-08-03 18:09:01 -0400
commitedcadfb47b736e6c9dd6b078689114aecf5c1add (patch)
treeae292e6448e8f078b735ce8b4ff7537986f26a48 /src/entity.cpp
parent8b912c47e19353a419c8717f7a839b0d63f5cc6c (diff)
allow extra data in blocks
Diffstat (limited to 'src/entity.cpp')
-rw-r--r--src/entity.cpp16
1 files changed, 11 insertions, 5 deletions
diff --git a/src/entity.cpp b/src/entity.cpp
index 80c9cf9..a5dc44e 100644
--- a/src/entity.cpp
+++ b/src/entity.cpp
@@ -10,15 +10,19 @@ void Block::serialize(DataStream &s) const {
s << (uint32_t)cmds.size();
for (auto cmd: cmds)
s << *cmd;
- if (qc == nullptr)
+ if (qc)
+ s << (uint8_t)1 << *qc;
+ else
s << (uint8_t)0;
+ if (extra)
+ s << (uint8_t)1 << *extra;
else
- s << (uint8_t)1 << *qc;
+ s << (uint8_t)0;
}
void Block::unserialize(DataStream &s, HotStuffCore *hsc) {
uint32_t n;
- uint8_t has_qc;
+ uint8_t flag;
s >> n;
parent_hashes.resize(n);
for (auto &hash: parent_hashes)
@@ -27,9 +31,11 @@ void Block::unserialize(DataStream &s, HotStuffCore *hsc) {
cmds.resize(n);
for (auto &cmd: cmds)
cmd = hsc->parse_cmd(s);
- s >> has_qc;
- qc = has_qc ? hsc->parse_quorum_cert(s) : nullptr;
+ s >> flag;
+ qc = flag ? hsc->parse_quorum_cert(s) : nullptr;
this->hash = salticidae::get_hash(*this);
+ s >> flag;
+ extra = flag ? hsc->parse_extra_block_data(s) : nullptr;
}
}