From efd49718dfbb6c1f329e72026770b07a67348168 Mon Sep 17 00:00:00 2001 From: Determinant Date: Mon, 16 Jul 2018 04:13:57 -0400 Subject: init --- src/entity.cpp | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 src/entity.cpp (limited to 'src/entity.cpp') diff --git a/src/entity.cpp b/src/entity.cpp new file mode 100644 index 0000000..1294484 --- /dev/null +++ b/src/entity.cpp @@ -0,0 +1,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); +} + +} -- cgit v1.2.3