[validation] explicit Success/Failure ctors for MempoolAcceptResult

Makes code more clear and prevents accidentally calling the wrong ctor.
This commit is contained in:
glozow
2021-05-20 21:22:35 +01:00
parent b88d77aec5
commit 578148ded6
2 changed files with 16 additions and 9 deletions

View File

@@ -169,9 +169,7 @@ void PruneBlockFilesManual(CChainState& active_chainstate, int nManualPruneHeigh
* Validation result for a single transaction mempool acceptance.
*/
struct MempoolAcceptResult {
/** Used to indicate the results of mempool validation,
* including the possibility of unfinished validation.
*/
/** Used to indicate the results of mempool validation. */
enum class ResultType {
VALID, //!> Fully validated, valid.
INVALID, //!> Invalid.
@@ -184,7 +182,16 @@ struct MempoolAcceptResult {
const std::optional<std::list<CTransactionRef>> m_replaced_transactions;
/** Raw base fees in satoshis. */
const std::optional<CAmount> m_base_fees;
static MempoolAcceptResult Failure(TxValidationState state) {
return MempoolAcceptResult(state);
}
static MempoolAcceptResult Success(std::list<CTransactionRef>&& replaced_txns, CAmount fees) {
return MempoolAcceptResult(std::move(replaced_txns), fees);
}
// Private constructors. Use static methods MempoolAcceptResult::Success, etc. to construct.
private:
/** Constructor for failure case */
explicit MempoolAcceptResult(TxValidationState state)
: m_result_type(ResultType::INVALID), m_state(state) {