asio::io_context& ioc;
asio::strand<asio::io_context::executor_type> strand;
Objecter* objecter;
- Objecter::LingerOp* op;
+ boost::intrusive_ptr<Objecter::LingerOp> op;
RADOS::NotifyComp c;
bool acked = false;
NotifyHandler(asio::io_context& ioc,
Objecter* objecter,
- Objecter::LingerOp* op,
+ boost::intrusive_ptr<Objecter::LingerOp> op,
RADOS::NotifyComp c)
: ioc(ioc), strand(asio::make_strand(ioc)),
- objecter(objecter), op(op), c(std::move(c)) {}
+ objecter(objecter), op(std::move(op)), c(std::move(c)) {}
// Use bind or a lambda to pass this in.
void handle_ack(bs::error_code ec,
if (!res && ec)
res = ec;
if ((acked && finished) || res) {
- objecter->linger_cancel(op);
+ objecter->linger_cancel(op.get());
ceph_assert(c);
bc::flat_map<std::pair<uint64_t, uint64_t>, buffer::list> reply_map;
bc::flat_set<std::pair<uint64_t, uint64_t>> missed_set;