]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
crimson/common/interruptible_future: add safe_then_interruptible for multiple error...
authorSamuel Just <sjust@redhat.com>
Fri, 11 Jun 2021 00:03:37 +0000 (17:03 -0700)
committerSamuel Just <sjust@redhat.com>
Wed, 23 Jun 2021 18:37:37 +0000 (11:37 -0700)
Signed-off-by: Samuel Just <sjust@redhat.com>
src/crimson/common/interruptible_future.h

index 643098624cc6a7ef6a777390fd89f74db81b10fe..28a7667a7f1dcf8396d777a3c46215ff4bac810a 100644 (file)
@@ -707,6 +707,19 @@ public:
     return (interrupt_futurize_t<decltype(fut)>)(std::move(fut));
   }
 
+  template <typename ValueInterruptCondT,
+           typename ErrorVisitorHeadT,
+           typename... ErrorVisitorTailT>
+  [[gnu::always_inline]]
+  auto safe_then_interruptible(ValueInterruptCondT&& valfunc,
+                              ErrorVisitorHeadT&& err_func_head,
+                              ErrorVisitorTailT&&... err_func_tail) {
+    return safe_then_interruptible(
+       std::forward<ValueInterruptCondT>(valfunc),
+       ::crimson::composer(std::forward<ErrorVisitorHeadT>(err_func_head),
+                           std::forward<ErrorVisitorTailT>(err_func_tail)...));
+  }
+
   template <typename ValueInterruptCondT,
            typename ErrorVisitorHeadT,
            typename... ErrorVisitorTailT>