summaryrefslogtreecommitdiffstats
path: root/slobrok
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2023-02-01 10:37:49 +0000
committerHenning Baldersheim <balder@yahoo-inc.com>2023-02-01 10:37:49 +0000
commit2e4adfad029cba7732833ab83dd6cc11760d48ab (patch)
tree06aa83ea6cd4baed967c4f24b01fcd949a754937 /slobrok
parent829aabc76deebca51cf4326f47bedbcdab9ecedb (diff)
Add noexcept MapDiff move constructor to avoid expensive and large copy constructor.
Diffstat (limited to 'slobrok')
-rw-r--r--slobrok/src/tests/local_rpc_monitor_map/local_rpc_monitor_map_test.cpp7
-rw-r--r--slobrok/src/tests/service_map_history/service_map_history_test.cpp10
-rw-r--r--slobrok/src/vespa/slobrok/server/map_diff.cpp1
-rw-r--r--slobrok/src/vespa/slobrok/server/map_diff.h1
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: