#pragma once #include #include #include #include #include #include #include #include namespace application::hash_join { class Benchmark; class MergeTask final : public mx::tasking::TaskInterface { public: MergeTask(const mx::util::core_set &cores, Benchmark *benchmark, std::uint64_t output_per_core); ~MergeTask() override; mx::tasking::TaskResult execute(std::uint16_t /*core_id*/, std::uint16_t /*channel_id*/) override; mx::util::vector> &result_set(const std::uint16_t channel_id) { return _result_sets[channel_id].value(); } [[nodiscard]] const mx::util::vector> &result_set( const std::uint16_t channel_id) const { return _result_sets[channel_id].value(); } [[nodiscard]] std::size_t count_tuples() const noexcept { return _count_output_tuples; } private: Benchmark *_benchmark; const std::uint16_t _count_cores; std::size_t _count_output_tuples{0U}; mx::util::aligned_t>> *_result_sets; }; } // namespace application::hash_join