OpenCBDC Transaction Processor
Loading...
Searching...
No Matches
uhs/atomizer/atomizer/format.cpp
Go to the documentation of this file.
1// Copyright (c) 2021 MIT Digital Currency Initiative,
2// Federal Reserve Bank of Boston
3// Distributed under the MIT software license, see the accompanying
4// file COPYING or http://www.opensource.org/licenses/mit-license.php.
5
6#include "format.hpp"
7
8#include "atomizer_raft.hpp"
12
13namespace cbdc {
15 -> serializer& {
16 return packet << blk.m_height << blk.m_transactions;
17 }
18
20 -> serializer& {
21 return packet >> blk.m_height >> blk.m_transactions;
22 }
23
26 -> serializer& {
27 auto atomizer_buf = snp.m_atomizer->serialize();
28 auto snp_buf = snp.m_snp->serialize();
29 ser << static_cast<uint64_t>(snp_buf->size());
30 ser.write(snp_buf->data_begin(), snp_buf->size());
31 ser.write(atomizer_buf.data(), atomizer_buf.size());
32 ser << *snp.m_blocks;
33 return ser;
34 }
35
37 -> serializer& {
38 uint64_t snp_sz{};
39 deser >> snp_sz;
40 auto snp_buf = nuraft::buffer::alloc(snp_sz);
41 deser.read(snp_buf->data_begin(), snp_buf->size());
42 auto nuraft_snp = nuraft::snapshot::deserialize(*snp_buf);
43 snp.m_snp = std::move(nuraft_snp);
44 snp.m_atomizer->deserialize(deser);
45 snp.m_blocks->clear();
46 deser >> *snp.m_blocks;
47 return deser;
48 }
49
50 auto operator<<(serializer& packet,
52 -> serializer& {
53 packet << msg.m_block_height << msg.m_tx << msg.m_attestations;
54 return packet;
55 }
56
58 -> serializer& {
59 packet >> msg.m_block_height >> msg.m_tx >> msg.m_attestations;
60 return packet;
61 }
62
63 auto operator<<(serializer& packet,
65 -> serializer& {
66 packet << msg.m_oldest_attestation << msg.m_tx;
67 return packet;
68 }
69
70 auto operator>>(serializer& packet,
72 -> serializer& {
73 packet >> msg.m_oldest_attestation >> msg.m_tx;
74 return packet;
75 }
76
77 auto operator<<(serializer& packet,
79 -> serializer& {
80 return packet << msg.m_agg_txs;
81 }
82
83 auto operator>>(serializer& packet,
85 -> serializer& {
86 return packet >> msg.m_agg_txs;
87 }
88
90 -> serializer& {
91 return ser << r.m_block_height;
92 }
94 -> serializer& {
95 return deser >> r.m_block_height;
96 }
97
99 const atomizer::make_block_request& /* r */)
100 -> serializer& {
101 return ser;
102 }
104 -> serializer& {
105 return deser;
106 }
107
109 -> serializer& {
110 return ser << r.m_block_height;
111 }
113 -> serializer& {
114 return deser >> r.m_block_height;
115 }
116
118 -> serializer& {
119 return ser << r.m_blk << r.m_errs;
120 }
122 -> serializer& {
123 return deser >> r.m_blk >> r.m_errs;
124 }
125
127 -> serializer& {
128 return ser << r.m_blk;
129 }
131 -> serializer& {
132 return deser >> r.m_blk;
133 }
134}
Interface for serializing objects into and out of raw bytes representations.
auto operator>>(serializer &deser, parsec::agent::rpc::request &req) -> serializer &
auto operator<<(serializer &ser, const parsec::agent::rpc::request &req) -> serializer &
Transaction notification message with a full set of input attestations.
Batch of aggregate transaction notifications.
Batch of compact transactions settled by the atomizer.
Definition block.hpp:19
Atomizer state machine response from get block request.
Placeholder struct for a make block state machine request.
Response from atomizer state machine to a make block request.
Prune blocks request for RPC and state machine.
Represents a snapshot of the state machine with associated metadata.