});
}
- template <typename Ret, typename F>
- auto repeat_with_onode(
- CollectionRef ch,
- const ghobject_t &oid,
- F &&f) {
- return seastar::do_with(
- oid,
- Ret{},
- TransactionRef(),
- OnodeRef(),
- std::forward<F>(f),
- [=](auto &oid, auto &ret, auto &t, auto &onode, auto &f) {
- return repeat_eagain([&, this] {
- t = transaction_manager->create_transaction();
- return onode_manager->get_onode(
- *t, oid
- ).safe_then([&](auto onode_ret) {
- onode = std::move(onode_ret);
- return f(*t, *onode);
- }).safe_then([&ret](auto _ret) {
- ret = _ret;
- });
- }).safe_then([&ret] {
- return seastar::make_ready_future<Ret>(ret);
- });
- });
- }
-
-
template <typename Ret, typename F>
auto repeat_with_onode(
CollectionRef ch,