public:
using type = ::crimson::errorator<AllowedErrors...>::future<ValueT>;
- template <class Func, class... Args>
- static type apply(Func&& func, std::tuple<Args...>&& args) {
- try {
- return ::seastar::futurize_apply(std::forward<Func>(func),
- std::forward<std::tuple<Args...>>(args));
- } catch (...) {
- return make_exception_future(std::current_exception());
- }
- }
-
template <class Func, class... Args>
static type invoke(Func&& func, Args&&... args) {
try {
using type = ::crimson::interruptible::interruptible_future_detail<
InterruptCond, typename futurize<FutureType>::type>;
- template <typename Func, typename... Args>
- static type apply(Func&& func, std::tuple<Args...>&& args) {
- try {
- return ::seastar::futurize_apply(std::forward<Func>(func),
- std::forward<std::tuple<Args...>>(args));
- } catch (...) {
- return seastar::futurize<
- ::crimson::interruptible::interruptible_future_detail<
- InterruptCond, FutureType>>::make_exception_future(
- std::current_exception());
- }
- }
-
template <typename Func, typename... Args>
static type invoke(Func&& func, Args&&... args) {
try {
using type = interruptible_future_detail<
InterruptCond, typename seastar::futurize<T>::type>;
- template <typename Func, typename... Args>
- static type apply(Func&& func, std::tuple<Args...>&& args) noexcept {
- return seastar::futurize<T>::apply(std::forward<Func>(func),
- std::forward<std::tuple<Args...>>(args));
- }
-
template <typename Func, typename... Args>
static type invoke(Func&& func, Args&&... args) noexcept {
return seastar::futurize<T>::invoke(
struct futurize<interruptible_future_detail<InterruptCond, FutureType>> {
using type = interruptible_future_detail<InterruptCond, FutureType>;
- template <typename Func, typename... Args>
- static type apply(Func&& func, std::tuple<Args...>&& args) noexcept {
- return seastar::futurize<FutureType>::apply(
- std::forward<Func>(func),
- std::forward<std::tuple<Args...>>(args));
- }
-
template <typename Func, typename... Args>
static type invoke(Func&& func, Args&&... args) noexcept {
return seastar::futurize<FutureType>::invoke(
template <typename T>
using futurize_t = typename futurize<T>::type;
- template <typename Func, typename... Args>
- static auto futurize_apply(Func&& func, std::tuple<Args...>&& args) noexcept {
- using futurator = futurize<std::result_of_t<Func(Args&&...)>>;
- return futurator::apply(std::forward<Func>(func), std::move(args));
- }
-
template <typename Container, typename AsyncAction>
[[gnu::always_inline]]
static auto do_for_each(Container& c, AsyncAction&& action) {