Refactoring after review. Removed code duplication.
This commit is contained in:
parent
63f4c7f2c5
commit
b28783c3ec
1 changed files with 15 additions and 14 deletions
|
|
@ -62,6 +62,17 @@ namespace {
|
||||||
|
|
||||||
std::vector<fc::sha256> proposed_operations_digests;
|
std::vector<fc::sha256> proposed_operations_digests;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
std::vector<fc::sha256> gather_proposed_operations_digests(const graphene::chain::transaction& trx)
|
||||||
|
{
|
||||||
|
proposed_operations_digest_accumulator digest_accumulator;
|
||||||
|
for (auto& operation: trx.operations)
|
||||||
|
{
|
||||||
|
operation.visit(digest_accumulator);
|
||||||
|
}
|
||||||
|
|
||||||
|
return digest_accumulator.proposed_operations_digests;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
namespace graphene { namespace chain {
|
namespace graphene { namespace chain {
|
||||||
|
|
@ -145,22 +156,12 @@ void database::check_tansaction_for_duplicated_operations(const signed_transacti
|
||||||
|
|
||||||
for (auto& pending_transaction: _pending_tx)
|
for (auto& pending_transaction: _pending_tx)
|
||||||
{
|
{
|
||||||
proposed_operations_digest_accumulator digest_accumulator;
|
auto proposed_operations_digests = gather_proposed_operations_digests(pending_transaction);
|
||||||
for (auto& operation: pending_transaction.operations)
|
existed_operations_digests.insert(proposed_operations_digests.begin(), proposed_operations_digests.end());
|
||||||
{
|
|
||||||
operation.visit(digest_accumulator);
|
|
||||||
}
|
|
||||||
|
|
||||||
existed_operations_digests.insert(digest_accumulator.proposed_operations_digests.begin(), digest_accumulator.proposed_operations_digests.end());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
proposed_operations_digest_accumulator digest_accumulator;
|
auto proposed_operations_digests = gather_proposed_operations_digests(trx);
|
||||||
for (auto& operation: trx.operations)
|
for (auto& digest: proposed_operations_digests)
|
||||||
{
|
|
||||||
operation.visit(digest_accumulator);
|
|
||||||
}
|
|
||||||
|
|
||||||
for (auto& digest: digest_accumulator.proposed_operations_digests)
|
|
||||||
{
|
{
|
||||||
FC_ASSERT(existed_operations_digests.count(digest) == 0, "Proposed operation is already pending for approval.");
|
FC_ASSERT(existed_operations_digests.count(digest) == 0, "Proposed operation is already pending for approval.");
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue