14 namespace final_chain {
41 TransactionStatus insert(std::shared_ptr<Transaction>&& transaction,
bool proposable, uint64_t last_block_number = 0);
58 std::shared_ptr<Transaction>
get(
const trx_hash_t& hash)
const;
std::chrono::system_clock::time_point transaction_overflow_time_
Definition: transaction_queue.hpp:151
void purge()
Removes any transactions that are no longer proposable.
Definition: transaction_queue.cpp:191
TransactionStatus insert(std::shared_ptr< Transaction > &&transaction, bool proposable, uint64_t last_block_number=0)
insert a transaction into the queue, sorted by priority
Definition: transaction_queue.cpp:110
std::unordered_map< trx_hash_t, std::pair< uint64_t, std::shared_ptr< Transaction > > > non_proposable_transactions_
Definition: transaction_queue.hpp:146
ExpirationCache< trx_hash_t > known_txs_
Definition: transaction_queue.hpp:148
bool nonProposableTransactionsOverTheLimit() const
return true if non proposable transactions are over the limit
Definition: transaction_queue.cpp:215
bool contains(const trx_hash_t &hash) const
returns true/false if the transaction is in the queue
Definition: transaction_queue.cpp:18
const size_t kNonProposableTransactionsPeriodExpiryLimit
Definition: transaction_queue.hpp:158
const size_t kMaxSize
Definition: transaction_queue.hpp:170
std::vector< std::shared_ptr< Transaction > > getOrderedTransactions(uint64_t count) const
returns up to the number of requested transaction sorted by priority. This call actually sorts the tr...
Definition: transaction_queue.cpp:35
std::shared_ptr< final_chain::FinalChain > final_chain_
Definition: transaction_queue.hpp:175
bool isTransactionKnown(const trx_hash_t &trx_hash) const
Definition: transaction_queue.cpp:221
const size_t kSingleAccountTransactionsLimitPercentage
Definition: transaction_queue.hpp:164
std::vector< SharedTransactions > getAllTransactions() const
returns all transactions grouped by transactions author
Definition: transaction_queue.cpp:74
void blockFinalized(uint64_t block_number)
Invoked when block finalized in final chain.
Definition: transaction_queue.cpp:180
const std::chrono::seconds kTransactionOverflowTimeLimit
Definition: transaction_queue.hpp:155
bool transactionsDropped() const
Have transactions been recently dropped due to queue reaching max size This call is thread-safe.
Definition: transaction_queue.hpp:125
size_t size() const
returns size of priority queue
Definition: transaction_queue.cpp:16
const size_t kMaxSingleAccountTransactionsSize
Definition: transaction_queue.hpp:173
TransactionQueue(std::shared_ptr< final_chain::FinalChain > final_chain, size_t max_size=kMinTransactionPoolSize)
Definition: transaction_queue.cpp:7
std::unordered_map< addr_t, std::map< val_t, std::shared_ptr< Transaction > > > account_nonce_transactions_
Definition: transaction_queue.hpp:139
const size_t kNonProposableTransactionsLimitPercentage
Definition: transaction_queue.hpp:161
std::shared_ptr< Transaction > get(const trx_hash_t &hash) const
returns the transaction or null
Definition: transaction_queue.cpp:22
bool erase(const trx_hash_t &hash)
remove transaction from queue
Definition: transaction_queue.cpp:88
void markTransactionKnown(const trx_hash_t &trx_hash)
Marks transaction as known (was successfully pushed into the tx pool) This call is thread-safe.
Definition: transaction_queue.cpp:219
const size_t kNonProposableTransactionsMaxSize
Definition: transaction_queue.hpp:167
std::unordered_map< trx_hash_t, std::shared_ptr< Transaction > > queue_transactions_
Definition: transaction_queue.hpp:142
TransactionQueue keeps transactions in memory sorted by priority to be included in a proposed DAG blo...
Definition: transaction_queue.hpp:30
TransactionStatus
TransactionStatus enum class defines current transaction status.
Definition: transaction_manager.hpp:19
std::chrono::system_clock::time_point time_point
Definition: watches.hpp:12
constexpr uint32_t kMinTransactionPoolSize
Definition: constants.hpp:29