const pg_info_t empty{spg_t{pgid.pgid, q.query.to}};
if (q.query.type == q.query.LOG ||
q.query.type == q.query.FULLLOG) {
- auto m = ceph::make_message<MOSDPGLog>(q.query.from, q.query.to,
+ auto m = crimson::make_message<MOSDPGLog>(q.query.from, q.query.to,
map_epoch, empty,
q.query.epoch_sent);
ctx.send_osd_message(q.from.osd, std::move(m));
void BufferedRecoveryMessages::send_notify(int to, const pg_notify_t &n)
{
spg_t pgid(n.info.pgid.pgid, n.to);
- send_osd_message(to, make_message<MOSDPGNotify2>(pgid, n));
+ send_osd_message(to, TOPNSPC::make_message<MOSDPGNotify2>(pgid, n));
}
void BufferedRecoveryMessages::send_query(
spg_t to_spgid,
const pg_query_t &q)
{
- send_osd_message(to, make_message<MOSDPGQuery2>(to_spgid, q));
+ send_osd_message(to, TOPNSPC::make_message<MOSDPGQuery2>(to_spgid, q));
}
void BufferedRecoveryMessages::send_info(
{
send_osd_message(
to,
- make_message<MOSDPGInfo2>(
+ TOPNSPC::make_message<MOSDPGInfo2>(
to_spgid,
info,
cur_epoch,
// [primary only] content recovery state
struct BufferedRecoveryMessages {
+#if defined(WITH_SEASTAR)
+ std::map<int, std::vector<MessageURef>> message_map;
+#else
std::map<int, std::vector<MessageRef>> message_map;
+#endif
BufferedRecoveryMessages() = default;
BufferedRecoveryMessages(PeeringCtx &ctx);
auto &ovec = message_map[target];
// put buffered messages in front
ls.reserve(ls.size() + ovec.size());
- ls.insert(ls.end(), ovec.begin(), ovec.end());
+ ls.insert(ls.end(), std::make_move_iterator(ovec.begin()), std::make_move_iterator(ovec.end()));
ovec.clear();
ovec.swap(ls);
}
}
- void send_osd_message(int target, MessageRef m) {
- message_map[target].push_back(std::move(m));
+ template <class MsgT> // MsgT = MessageRef for ceph-osd and MessageURef for crimson-osd
+ void send_osd_message(int target, MsgT&& m) {
+ message_map[target].emplace_back(std::forward<MsgT>(m));
}
void send_notify(int to, const pg_notify_t &n);
void send_query(int to, spg_t spgid, const pg_query_t &q);
PeeringCtxWrapper(PeeringCtxWrapper &&ctx) = default;
- void send_osd_message(int target, MessageRef m) {
- msgs.send_osd_message(target, std::move(m));
+ template <class MsgT> // MsgT = MessageRef for ceph-osd and MessageURef for crimson-osd
+ void send_osd_message(int target, MsgT&& m) {
+ msgs.send_osd_message(target, std::forward<MsgT>(m));
}
void send_notify(int to, const pg_notify_t &n) {
msgs.send_notify(to, n);