46 std::is_invocable_r_v<Status, const T&> ||
47 (std::copy_constructible<T> && std::is_invocable_r_v<Status, T&>);
53ICEBERG_EXPORT Status RunTasksSingleThreaded(std::vector<FnOnce<Status()>> tasks);
55ICEBERG_EXPORT Status RunTasksParallel(Executor& executor,
56 std::vector<FnOnce<Status()>> tasks);
60template <retry::Policy RetryPolicy = retry::NoRetry>
63 static constexpr bool kRetryEnabled = !std::same_as<RetryPolicy, retry::NoRetry>;
67 using RetryConfigStorage = std::conditional_t<kRetryEnabled, RetryConfig, Empty>;
73 requires(kRetryEnabled)
74 : retry_config_(std::move(retry_config)) {}
76 auto&& SetExecutor(
this auto&& self, OptionalExecutor executor) {
77 self.executor_ = std::move(executor);
78 return std::forward<decltype(self)>(self);
84 auto&& Submit(
this auto&& self, F&& task) {
85 self.tasks_.emplace_back([&] {
86 if constexpr (!kRetryEnabled) {
87 return std::forward<F>(task);
89 return [retry_config = self.retry_config_,
90 task = std::forward<F>(task)]()
mutable -> Status {
95 return std::forward<decltype(self)>(self);
99 if (!executor_.has_value()) {
100 return internal::RunTasksSingleThreaded(std::move(tasks_));
102 return internal::RunTasksParallel(executor_->get(), std::move(tasks_));
106 std::vector<
FnOnce<Status()>> tasks_;
107 OptionalExecutor executor_;
108 [[no_unique_address]] RetryConfigStorage retry_config_;
Definition functional.h:48
Utility class for running tasks with retry logic.
Definition retry_util.h:138
auto Run(F &&task, int32_t *attempt_counter=nullptr) -> std::remove_cvref_t< std::invoke_result_t< F & > >
Run a task that returns a Result<T>
Definition retry_util.h:150
Definition task_group.h:61
Definition task_group.h:42
Definition task_group.h:45
Definition task_group.h:50
Definition functional.h:41
Define task executor interfaces.
Provide move-only function wrappers.
Define symbol visibility macros for core Iceberg APIs.
Core Apache Iceberg C++ APIs.
Definition arrow_io_util.h:33
Define Result, Status, and error helpers.
Provide retry policy and runner utilities.
Configuration for retry behavior.
Definition retry_util.h:46