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 TaskGroup& SetExecutor(OptionalExecutor executor) & {
77 executor_ = std::move(executor);
81 TaskGroup&& SetExecutor(OptionalExecutor executor) && {
82 executor_ = std::move(executor);
83 return std::move(*
this);
90 AddTask(std::forward<F>(task));
98 AddTask(std::forward<F>(task));
99 return std::move(*
this);
103 if (!executor_.has_value()) {
104 return internal::RunTasksSingleThreaded(std::move(tasks_));
106 return internal::RunTasksParallel(executor_->get(), std::move(tasks_));
111 template <
typename F>
112 void AddTask(F&& task) {
113 tasks_.emplace_back([&] {
114 if constexpr (!kRetryEnabled) {
115 return std::forward<F>(task);
117 return [retry_config = retry_config_,
118 task = std::forward<F>(task)]()
mutable ->
Status {
126 OptionalExecutor executor_;
127 [[no_unique_address]] RetryConfigStorage retry_config_;
Definition functional.h:48
Utility class for running tasks with retry logic.
Definition retry_util.h:139
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:151
Definition task_group.h:61
Definition expected.h:1199
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:34
Define Result, Status, and error helpers.
Provide retry policy and runner utilities.
Configuration for retry behavior.
Definition retry_util.h:46