}
}
-seastar::future<> ShardServices::send_to_osd(
- int peer, Ref<Message> m, epoch_t from_epoch) {
+template<class MsgT>
+seastar::future<> ShardServices::do_send_to_osd(
+ int peer, MsgT m, epoch_t from_epoch)
+{
if (osdmap->is_down(peer)) {
logger().info("{}: osd.{} is_down", __func__, peer);
return seastar::now();
} else {
auto conn = cluster_msgr.connect(
osdmap->get_cluster_addrs(peer).front(), CEPH_ENTITY_TYPE_OSD);
- return conn->send(m);
+ return conn->send(std::move(m));
}
}
+seastar::future<> ShardServices::send_to_osd(
+ int peer, MessageRef m, epoch_t from_epoch)
+{
+ return do_send_to_osd(peer, std::move(m), from_epoch);
+}
+
+seastar::future<> ShardServices::send_to_osd(
+ int peer, MessageURef m, epoch_t from_epoch)
+{
+ return do_send_to_osd(peer, std::move(m), from_epoch);
+}
+
seastar::future<> ShardServices::dispatch_context_transaction(
crimson::os::CollectionRef col, PeeringCtx &ctx) {
auto ret = store.do_transaction(
const char** get_tracked_conf_keys() const final;
void handle_conf_change(const ConfigProxy& conf,
const std::set <std::string> &changed) final;
+ template<class MsgT>
+ seastar::future<> do_send_to_osd(int peer, MsgT m, epoch_t from_epoch);
+
public:
ShardServices(
OSDMapService &osdmap_service,
MessageRef m,
epoch_t from_epoch);
+ seastar::future<> send_to_osd(
+ int peer,
+ MessageURef m,
+ epoch_t from_epoch);
+
crimson::os::FuturizedStore &get_store() {
return store;
}