File tree Expand file tree Collapse file tree 4 files changed +15
-11
lines changed
test/messages/peer/detail Expand file tree Collapse file tree 4 files changed +15
-11
lines changed Original file line number Diff line number Diff line change 1919#include < bitcoin/network/messages/peer/detail/get_data.hpp>
2020
2121#include < algorithm>
22+ #include < ranges>
2223#include < bitcoin/network/messages/peer/enums/identifier.hpp>
2324#include < bitcoin/network/messages/peer/enums/level.hpp>
2425#include < bitcoin/network/messages/peer/enums/magic_numbers.hpp>
@@ -92,12 +93,13 @@ size_t get_data::size(uint32_t version) const NOEXCEPT
9293 (items.size () * item::size (version));
9394}
9495
96+ // Populated in reverse order for efficient removals.
9597inventory_items get_data::select (selector types) const NOEXCEPT
9698{
9799 inventory_items out{};
98100 out.reserve (count (types));
99-
100- for (const auto & item: items)
101+
102+ for (const auto & item: std::views::reverse ( items) )
101103 if (item.is_selected (types))
102104 out.push_back (item);
103105
Original file line number Diff line number Diff line change 1919#include < bitcoin/network/messages/peer/detail/inventory.hpp>
2020
2121#include < algorithm>
22+ #include < ranges>
2223#include < utility>
2324#include < bitcoin/network/messages/peer/enums/identifier.hpp>
2425#include < bitcoin/network/messages/peer/enums/level.hpp>
@@ -122,12 +123,13 @@ size_t inventory::size(uint32_t version) const NOEXCEPT
122123 (items.size () * item::size (version));
123124}
124125
126+ // Populated in reverse order for efficient removals.
125127inventory_items inventory::select (selector types) const NOEXCEPT
126128{
127129 inventory_items out{};
128130 out.reserve (count (types));
129131
130- for (const auto & item: items)
132+ for (const auto & item: std::views::reverse ( items) )
131133 if (item.is_selected (types))
132134 out.push_back (item);
133135
Original file line number Diff line number Diff line change @@ -72,17 +72,17 @@ BOOST_AUTO_TEST_CASE(get_data__select__selectors__expected_items)
7272
7373 const auto txs = inv.select (inventory_item::selector::txids);
7474 BOOST_REQUIRE_EQUAL (txs.size (), 2u );
75- BOOST_CHECK (txs[0 ].type == inventory_item::type_id::transaction );
76- BOOST_CHECK (txs[1 ].type == inventory_item::type_id::witness_tx );
75+ BOOST_CHECK (txs[0 ].type == inventory_item::type_id::witness_tx );
76+ BOOST_CHECK (txs[1 ].type == inventory_item::type_id::transaction );
7777
7878 const auto wtxs = inv.select (inventory_item::selector::wtxids);
7979 BOOST_REQUIRE_EQUAL (wtxs.size (), 1u );
8080 BOOST_CHECK (wtxs[0 ].type == inventory_item::type_id::wtxid);
8181
8282 const auto blocks = inv.select (inventory_item::selector::blocks);
8383 BOOST_REQUIRE_EQUAL (blocks.size (), 2u );
84- BOOST_CHECK (blocks[0 ].type == inventory_item::type_id::block );
85- BOOST_CHECK (blocks[1 ].type == inventory_item::type_id::witness_block );
84+ BOOST_CHECK (blocks[0 ].type == inventory_item::type_id::witness_block );
85+ BOOST_CHECK (blocks[1 ].type == inventory_item::type_id::block );
8686
8787 const auto filters = inv.select (inventory_item::selector::filters);
8888 BOOST_REQUIRE_EQUAL (filters.size (), 1u );
Original file line number Diff line number Diff line change @@ -70,17 +70,17 @@ BOOST_AUTO_TEST_CASE(inventory__select__selectors__expected_items)
7070
7171 const auto txs = inv.select (inventory_item::selector::txids);
7272 BOOST_REQUIRE_EQUAL (txs.size (), 2u );
73- BOOST_CHECK (txs[0 ].type == inventory_item::type_id::transaction );
74- BOOST_CHECK (txs[1 ].type == inventory_item::type_id::witness_tx );
73+ BOOST_CHECK (txs[0 ].type == inventory_item::type_id::witness_tx );
74+ BOOST_CHECK (txs[1 ].type == inventory_item::type_id::transaction );
7575
7676 const auto wtxs = inv.select (inventory_item::selector::wtxids);
7777 BOOST_REQUIRE_EQUAL (wtxs.size (), 1u );
7878 BOOST_CHECK (wtxs[0 ].type == inventory_item::type_id::wtxid);
7979
8080 const auto blocks = inv.select (inventory_item::selector::blocks);
8181 BOOST_REQUIRE_EQUAL (blocks.size (), 2u );
82- BOOST_CHECK (blocks[0 ].type == inventory_item::type_id::block );
83- BOOST_CHECK (blocks[1 ].type == inventory_item::type_id::witness_block );
82+ BOOST_CHECK (blocks[0 ].type == inventory_item::type_id::witness_block );
83+ BOOST_CHECK (blocks[1 ].type == inventory_item::type_id::block );
8484
8585 const auto filters = inv.select (inventory_item::selector::filters);
8686 BOOST_REQUIRE_EQUAL (filters.size (), 1u );
You can’t perform that action at this time.
0 commit comments