5 #ifndef BITCOIN_BLOCKENCODINGS_H 6 #define BITCOIN_BLOCKENCODINGS_H 23 template <
typename Stream,
typename Operation>
37 template <
typename Stream,
typename Operation>
42 if (ser_action.ForRead()) {
44 while (
indexes.size() < indexes_size) {
46 for (; i <
indexes.size(); i++) {
49 if (index > std::numeric_limits<uint16_t>::max())
50 throw std::ios_base::failure(
"index overflowed 16 bits");
56 for (
size_t j = 0; j <
indexes.size(); j++) {
57 if (
int32_t(
indexes[j]) + offset > std::numeric_limits<uint16_t>::max())
58 throw std::ios_base::failure(
"indexes overflowed 16 bits");
63 for (
size_t i = 0; i <
indexes.size(); i++) {
75 std::vector<CTransactionRef>
txn;
83 template <
typename Stream,
typename Operation>
88 if (ser_action.ForRead()) {
90 while (
txn.size() < txn_size) {
92 for (; i <
txn.size(); i++)
96 for (
size_t i = 0; i <
txn.size(); i++)
111 template <
typename Stream,
typename Operation>
115 if (idx > std::numeric_limits<uint16_t>::max())
116 throw std::ios_base::failure(
"index overflowed 16-bits");
159 template <
typename Stream,
typename Operation>
166 if (ser_action.ForRead()) {
175 static_assert(
SHORTTXIDS_LENGTH == 6,
"shorttxids serialization assumes 6-byte shorttxids");
179 for (
size_t i = 0; i <
shorttxids.size(); i++) {
189 if (
BlockTxCount() > std::numeric_limits<uint16_t>::max())
190 throw std::ios_base::failure(
"indexes overflowed 16 bits");
192 if (ser_action.ForRead())
212 #endif // BITCOIN_BLOCKENCODINGS_H std::shared_ptr< const CTransaction > CTransactionRef
Definition: transaction.h:408
std::vector< uint16_t > indexes
Definition: blockencodings.h:33
enum ReadStatus_t ReadStatus
Definition: blockencodings.h:15
BlockTransactions(const BlockTransactionsRequest &req)
Definition: blockencodings.h:78
uint256 blockhash
Definition: blockencodings.h:32
size_t mempool_count
Definition: blockencodings.h:200
CTransactionRef & tx
Definition: blockencodings.h:17
void SerializationOp(Stream &s, Operation ser_action)
Definition: blockencodings.h:84
std::vector< CTransactionRef > txn_available
Definition: blockencodings.h:199
ADD_SERIALIZE_METHODS
Definition: blockencodings.h:157
uint16_t index
Definition: blockencodings.h:106
Definition: blockencodings.h:71
#define COMPACTSIZE(obj)
Definition: serialize.h:423
std::vector< CTransactionRef > txn
Definition: blockencodings.h:75
uint64_t nonce
Definition: blockencodings.h:134
CTxMemPool * pool
Definition: blockencodings.h:201
bool IsTxAvailable(size_t index) const
Definition: blockencodings.cpp:171
unsigned short uint16_t
Definition: stdint.h:20
CBlockHeaderAndShortTxIDs()
Definition: blockencodings.h:149
void SerializationOp(Stream &s, Operation ser_action)
Definition: blockencodings.h:38
TransactionCompressor(CTransactionRef &txIn)
Definition: blockencodings.h:19
ReadStatus_t
Definition: blockencodings.h:122
std::vector< uint64_t > shorttxids
Definition: blockencodings.h:142
static const int SHORTTXIDS_LENGTH
Definition: blockencodings.h:140
Definition: blockencodings.h:103
Definition: blockencodings.h:29
Definition: blockencodings.h:127
uint64_t shorttxidk1
Definition: blockencodings.h:133
size_t prefilled_count
Definition: blockencodings.h:200
Definition: blockencodings.h:131
unsigned int uint32_t
Definition: stdint.h:21
BlockTransactions()
Definition: blockencodings.h:77
ADD_SERIALIZE_METHODS
Definition: blockencodings.h:81
unsigned long long uint64_t
Definition: stdint.h:22
ReadStatus InitData(const CBlockHeaderAndShortTxIDs &cmpctblock, const std::vector< std::pair< uint256, CTransactionRef >> &extra_txn)
Definition: blockencodings.cpp:49
void SerializationOp(Stream &s, Operation ser_action)
Definition: blockencodings.h:160
CTransactionRef tx
Definition: blockencodings.h:107
std::vector< PrefilledTransaction > prefilledtxn
Definition: blockencodings.h:143
Definition: blockencodings.h:126
uint64_t shorttxidk0
Definition: blockencodings.h:133
ADD_SERIALIZE_METHODS
Definition: blockencodings.h:109
Definition: uint256.h:121
Definition: txmempool.h:443
Definition: blockencodings.h:197
size_t extra_count
Definition: blockencodings.h:200
void SerializationOp(Stream &s, Operation ser_action)
Definition: blockencodings.h:24
Definition: blockencodings.h:124
uint64_t GetShortID(const uint256 &txhash) const
Definition: blockencodings.cpp:42
ReadStatus FillBlock(CBlock &block, const std::vector< CTransactionRef > &vtx_missing)
Definition: blockencodings.cpp:177
uint256 blockhash
Definition: blockencodings.h:74
void SerializationOp(Stream &s, Operation ser_action)
Definition: blockencodings.h:112
signed int int32_t
Definition: stdint.h:17
CBlockHeader header
Definition: blockencodings.h:146
PartiallyDownloadedBlock(CTxMemPool *poolIn)
Definition: blockencodings.h:204
#define READWRITE(...)
Definition: serialize.h:184
Definition: blockencodings.h:125
ADD_SERIALIZE_METHODS
Definition: blockencodings.h:35
CBlockHeader header
Definition: blockencodings.h:203
size_t BlockTxCount() const
Definition: blockencodings.h:155
void FillShortTxIDSelector() const
Definition: blockencodings.cpp:31
ADD_SERIALIZE_METHODS
Definition: blockencodings.h:21