diff options
Diffstat (limited to 'include/hotstuff/client.h')
-rw-r--r-- | include/hotstuff/client.h | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/include/hotstuff/client.h b/include/hotstuff/client.h new file mode 100644 index 0000000..dd1cfee --- /dev/null +++ b/include/hotstuff/client.h @@ -0,0 +1,66 @@ +#ifndef _HOTSTUFF_CLIENT_H +#define _HOTSTUFF_CLIENT_H + +#include "type.h" +#include "salticidae/msg.h" +#include "entity.h" + +namespace hotstuff { + +enum { + REQ_CMD = 0x4, + RESP_CMD = 0x5, + CHK_CMD = 0x6 +}; + +class CommandDummy: public Command { + static uint64_t cnt; + uint64_t n; + uint256_t hash; + + public: + + CommandDummy() {} + + ~CommandDummy() override {} + + CommandDummy(uint64_t n): + n(n), hash(salticidae::get_hash(*this)) {} + + static command_t make_cmd() { + return new CommandDummy(cnt++); + } + + void serialize(DataStream &s) const override { + s << n; + } + + void unserialize(DataStream &s) override { + s >> n; + hash = salticidae::get_hash(*this); + } + + const uint256_t &get_hash() const override { + return hash; + } + + bool verify() const override { + return true; + } +}; + +struct MsgClient: public salticidae::MsgBase<> { + using MsgBase::MsgBase; + void gen_reqcmd(const Command &cmd); + void parse_reqcmd(CommandDummy &cmd) const; + + void gen_respcmd(const uint256_t &cmd_hash, const Finality &fin); + void parse_respcmd(uint256_t &cmd_hash, Finality &fin) const; + + void gen_chkcmd(const uint256_t &cmd_hash); + void parse_chkcmd(uint256_t &cmd_hash) const; +}; + +} + +#endif |