diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2023-02-01 10:37:49 +0000 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2023-02-01 10:37:49 +0000 |
commit | 2e4adfad029cba7732833ab83dd6cc11760d48ab (patch) | |
tree | 06aa83ea6cd4baed967c4f24b01fcd949a754937 /slobrok/src | |
parent | 829aabc76deebca51cf4326f47bedbcdab9ecedb (diff) |
Add noexcept MapDiff move constructor to avoid expensive and large copy constructor.
Diffstat (limited to 'slobrok/src')
4 files changed, 12 insertions, 7 deletions
diff --git a/slobrok/src/tests/local_rpc_monitor_map/local_rpc_monitor_map_test.cpp b/slobrok/src/tests/local_rpc_monitor_map/local_rpc_monitor_map_test.cpp index 5b0829f1dff..b7235155f8c 100644 --- a/slobrok/src/tests/local_rpc_monitor_map/local_rpc_monitor_map_test.cpp +++ b/slobrok/src/tests/local_rpc_monitor_map/local_rpc_monitor_map_test.cpp @@ -60,6 +60,7 @@ public: }; struct MapLog : CallLog<MapCall>, MapListener { + ~MapLog() override; void add(const ServiceMapping &mapping) override { log(MapCall::add(mapping)); } @@ -73,6 +74,8 @@ struct MapLog : CallLog<MapCall>, MapListener { } }; +MapLog::~MapLog() = default; + struct MonitorLog : CallLog<MonitorCall>, MappingMonitor { void start(const ServiceMapping& mapping, bool hurry) override { log(MonitorCall::start(mapping, hurry)); @@ -84,7 +87,7 @@ struct MonitorLog : CallLog<MonitorCall>, MappingMonitor { struct MyMappingMonitor : MappingMonitor { MonitorLog &monitor; - MyMappingMonitor(MonitorLog &m) : monitor(m) {} + explicit MyMappingMonitor(MonitorLog &m) : monitor(m) {} void start(const ServiceMapping& mapping, bool hurry) override { monitor.start(mapping, hurry); } @@ -160,7 +163,7 @@ struct LocalRpcMonitorMapTest : public ::testing::Test { map_log.expect({}); } } - ~LocalRpcMonitorMapTest(); + ~LocalRpcMonitorMapTest() override; }; LocalRpcMonitorMapTest::~LocalRpcMonitorMapTest() = default; diff --git a/slobrok/src/tests/service_map_history/service_map_history_test.cpp b/slobrok/src/tests/service_map_history/service_map_history_test.cpp index 398ec91feb2..81058d9c725 100644 --- a/slobrok/src/tests/service_map_history/service_map_history_test.cpp +++ b/slobrok/src/tests/service_map_history/service_map_history_test.cpp @@ -14,7 +14,7 @@ using Map = std::map<vespalib::string, vespalib::string>; struct Dumper : ServiceMapHistory::DiffCompletionHandler { std::unique_ptr<MapDiff> got = {}; void handle(MapDiff diff) override { - got = std::make_unique<MapDiff>(diff); + got = std::make_unique<MapDiff>(std::move(diff)); } }; @@ -22,7 +22,7 @@ MapDiff diffGen(ServiceMapHistory &history, uint32_t gen) { Dumper dumper; history.asyncGenerationDiff(&dumper, GenCnt(gen)); EXPECT_TRUE(dumper.got); - return *dumper.got; + return std::move(*dumper.got); } Map dump(ServiceMapHistory &history) { @@ -60,7 +60,7 @@ TEST(ServiceMapHistoryTest, empty_inspection) { empty2.asyncGenerationDiff(&dumper, gen); } EXPECT_TRUE(dumper.got); - auto diff1 = *dumper.got; + auto diff1 = std::move(*dumper.got); EXPECT_FALSE(diff1.is_full_dump()); EXPECT_EQ(diff1.fromGen, gen); EXPECT_TRUE(diff1.removed.empty()); @@ -140,7 +140,7 @@ TEST(ServiceMapHistoryTest, full_inspection) { EXPECT_FALSE(dumper.got); } EXPECT_TRUE(dumper.got); - auto diff1 = *dumper.got; + auto diff1 = std::move(*dumper.got); EXPECT_EQ(diff1.fromGen, GenCnt(1987)); EXPECT_TRUE(diff1.removed.empty()); EXPECT_TRUE(diff1.updated.empty()); @@ -162,7 +162,7 @@ public: got_updates = diff.updated.size(); } - ~MockListener(); + ~MockListener() override; }; MockListener::~MockListener() = default; diff --git a/slobrok/src/vespa/slobrok/server/map_diff.cpp b/slobrok/src/vespa/slobrok/server/map_diff.cpp index ea71e1c1269..fb086fbe45b 100644 --- a/slobrok/src/vespa/slobrok/server/map_diff.cpp +++ b/slobrok/src/vespa/slobrok/server/map_diff.cpp @@ -4,6 +4,7 @@ namespace slobrok { +MapDiff::MapDiff(MapDiff &&) noexcept = default; MapDiff::~MapDiff() = default; } // namespace slobrok diff --git a/slobrok/src/vespa/slobrok/server/map_diff.h b/slobrok/src/vespa/slobrok/server/map_diff.h index a28336eb2e4..638d4cd5d4c 100644 --- a/slobrok/src/vespa/slobrok/server/map_diff.h +++ b/slobrok/src/vespa/slobrok/server/map_diff.h @@ -29,6 +29,7 @@ struct MapDiff { : MapDiff(0, {}, std::move(mappings), to) {} + MapDiff(MapDiff &&) noexcept; ~MapDiff(); // is this a diff from the empty map: |